agora inbox for [email protected]help / color / mirror / Atom feed
[PATCH] Add section headers to index types doc 1611+ messages / 2 participants [nested] [flat]
* [PATCH] Add section headers to index types doc @ 2020-07-31 09:20 Dagfinn Ilmari Mannsåker <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Dagfinn Ilmari Mannsåker @ 2020-07-31 09:20 UTC (permalink / raw) This makes it easier to compare the properties of different index types at a glance. In passing, make the index operator lists a single line each. --- doc/src/sgml/indices.sgml | 81 +++++++++++++++++++-------------------- 1 file changed, 39 insertions(+), 42 deletions(-) diff --git a/doc/src/sgml/indices.sgml b/doc/src/sgml/indices.sgml index 671299ff05..f22253f4c3 100644 --- a/doc/src/sgml/indices.sgml +++ b/doc/src/sgml/indices.sgml @@ -122,6 +122,9 @@ B-tree indexes, which fit the most common situations. </para> + <sect2 id="indexes-types-btree"> + <title>B-tree</title> + <para> <indexterm> <primary>index</primary> @@ -137,13 +140,9 @@ will consider using a B-tree index whenever an indexed column is involved in a comparison using one of these operators: - <simplelist> - <member><literal><</literal></member> - <member><literal><=</literal></member> - <member><literal>=</literal></member> - <member><literal>>=</literal></member> - <member><literal>></literal></member> - </simplelist> +<synopsis> +< <= = >= > +</synopsis> Constructs equivalent to combinations of these operators, such as <literal>BETWEEN</literal> and <literal>IN</literal>, can also be implemented with @@ -172,6 +171,10 @@ This is not always faster than a simple scan and sort, but it is often helpful. </para> + </sect2> + + <sect2 id="indexes-types-hash"> + <title>Hash</title> <para> <indexterm> @@ -191,6 +194,10 @@ CREATE INDEX <replaceable>name</replaceable> ON <replaceable>table</replaceable> USING HASH (<replaceable>column</replaceable>); </synopsis> </para> + </sect2> + + <sect2 id="indexes-type-gist"> + <title>GiST</title> <para> <indexterm> @@ -210,20 +217,9 @@ for several two-dimensional geometric data types, which support indexed queries using these operators: - <simplelist> - <member><literal><<</literal></member> - <member><literal>&<</literal></member> - <member><literal>&></literal></member> - <member><literal>>></literal></member> - <member><literal><<|</literal></member> - <member><literal>&<|</literal></member> - <member><literal>|&></literal></member> - <member><literal>|>></literal></member> - <member><literal>@></literal></member> - <member><literal><@</literal></member> - <member><literal>~=</literal></member> - <member><literal>&&</literal></member> - </simplelist> +<synopsis> +<< &< &> >> <<| &<| |&> |>> @> <@ ~= && +</synopsis> (See <xref linkend="functions-geometry"/> for the meaning of these operators.) @@ -246,6 +242,10 @@ In <xref linkend="gist-builtin-opclasses-table"/>, operators that can be used in this way are listed in the column <quote>Ordering Operators</quote>. </para> + </sect2> + + <sect2 id="indexes-type-spgist"> + <title>SP-GiST</title> <para> <indexterm> @@ -264,14 +264,9 @@ for two-dimensional points, which support indexed queries using these operators: - <simplelist> - <member><literal><<</literal></member> - <member><literal>>></literal></member> - <member><literal>~=</literal></member> - <member><literal><@</literal></member> - <member><literal><^</literal></member> - <member><literal>>^</literal></member> - </simplelist> +<synopsis> +<< >> ~= <@ <^ >^ +</synopsis> (See <xref linkend="functions-geometry"/> for the meaning of these operators.) @@ -286,6 +281,10 @@ corresponding operator is specified in the <quote>Ordering Operators</quote> column in <xref linkend="spgist-builtin-opclasses-table"/>. </para> + </sect2> + + <sect2 id="indexes-types-gin"> + <title>GIN</title> <para> <indexterm> @@ -312,12 +311,9 @@ <productname>PostgreSQL</productname> includes a GIN operator class for arrays, which supports indexed queries using these operators: - <simplelist> - <member><literal><@</literal></member> - <member><literal>@></literal></member> - <member><literal>=</literal></member> - <member><literal>&&</literal></member> - </simplelist> +<synopsis> +<@ @> = && +</synopsis> (See <xref linkend="functions-array"/> for the meaning of these operators.) @@ -327,6 +323,10 @@ classes are available in the <literal>contrib</literal> collection or as separate projects. For more information see <xref linkend="gin"/>. </para> + </sect2> + + <sect2 id="indexes-types-brin"> + <title>BRIN</title> <para> <indexterm> @@ -348,18 +348,15 @@ values in the column for each block range. This supports indexed queries using these operators: - <simplelist> - <member><literal><</literal></member> - <member><literal><=</literal></member> - <member><literal>=</literal></member> - <member><literal>>=</literal></member> - <member><literal>></literal></member> - </simplelist> +<synopsis> +< <= = >= > +</synopsis> The BRIN operator classes included in the standard distribution are documented in <xref linkend="brin-builtin-opclasses-table"/>. For more information see <xref linkend="brin"/>. </para> + </sect2> </sect1> -- 2.27.0 --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0002-Reindent-index-types-docs-after-previous-commit.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 7abdc62f41..586bec8466 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", - year_sign, abs(year), abs(mon), - day_sign, (long long) i64abs(mday), - sec_sign, (long long) i64abs(hour), abs(min)); - cp += strlen(cp); + data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:", + year_sign, abs(year), abs(mon), + day_sign, (long long) i64abs(mday), + sec_sign, (long long) i64abs(hour), abs(min)); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%lld %lld:%02d:", - (long long) mday, (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld %lld:%02d:", + (long long) mday, (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%lld:%02d:", (long long) hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.45.1 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls @ 2024-09-11 04:21 Andy Fan <[email protected]> 0 siblings, 0 replies; 1611+ messages in thread From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw) sprintf return the number of characters printed (not including the trailing `\0'), so it is exactly same as strlen. so we can reuse that value and avoid a strlen call. --- src/backend/utils/adt/datetime.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 8f25c15fcfc..83c3c85305b 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) int fsec = itm->tm_usec; bool is_before = false; bool is_zero = true; + int data_len; /* * The sign of year and month are guaranteed to match, since they are @@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) char sec_sign = (hour < 0 || min < 0 || sec < 0 || fsec < 0) ? '-' : '+'; - sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", + data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:", year_sign, abs(year), abs(mon), day_sign, i64abs(mday), sec_sign, i64abs(hour), abs(min)); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } @@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str) } else if (has_day) { - sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", + data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:", mday, hour, min); - cp += strlen(cp); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } else { - sprintf(cp, "%" PRId64 ":%02d:", hour, min); - cp += strlen(cp); + data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min); + cp += data_len; cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true); *cp = '\0'; } -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch ^ permalink raw reply [nested|flat] 1611+ messages in thread
end of thread, other threads:[~2024-09-11 04:21 UTC | newest] Thread overview: 1611+ messages (download: mbox mbox.gz follow: Atom feed) -- links below jump to the message on this page -- 2020-07-31 09:20 [PATCH] Add section headers to index types doc Dagfinn Ilmari Mannsåker <[email protected]> 2024-09-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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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]>
This inbox is served by agora; see mirroring instructions for how to clone and mirror all data and code used for this inbox