agora inbox for [email protected]
help / color / mirror / Atom feedRe: [HACKERS] strange behavior of UPDATE
1610+ messages / 3 participants
[nested] [flat]
* Re: [HACKERS] strange behavior of UPDATE
@ 1999-09-21 19:42 Bruce Momjian <[email protected]>
1999-09-22 01:16 ` Re: [HACKERS] strange behavior of UPDATE Tom Lane <[email protected]>
0 siblings, 1 reply; 1610+ messages in thread
From: Bruce Momjian @ 1999-09-21 19:42 UTC (permalink / raw)
To: Tom Lane <[email protected]>; +Cc: Edmund Mergl <[email protected]>; pgsql-hackers
Tom, I assume this is done, right?
> I wrote:
> > then a possible explanation for the problem would be that our
> > btree index code isn't very fast when there are large numbers of
> > identical keys.
>
> Ah-hah, a lucky guess! I went back and looked at the profile stats
> I'd extracted from Edmund's "update" example. This Linux box has
> the same semi-functional gprof as someone else was using a while
> ago --- the timings are bogus, but the call counts seem right.
> And what I find are entries like this:
>
> 0.00 0.00 284977/284977 _bt_binsrch [3174]
> [3177] 0.0 0.00 0.00 284977 _bt_firsteq [3177]
> 0.00 0.00 21784948/24713758 _bt_compare [3169]
>
> 0.00 0.00 426/35632 _bt_split [53]
> 0.00 0.00 35206/35632 _bt_insertonpg [45]
> [3185] 0.0 0.00 0.00 35632 _bt_findsplitloc [3185]
> 0.00 0.00 5093972/8907411 _bt_itemcmp [3171]
>
> In other words, _bt_firsteq is averaging almost 100 comparisons per
> call, _bt_findsplitloc well over that. Both of these routines are
> evidently designed on the assumption that there will be relatively
> few duplicate keys --- they reduce to linear scans when there are
> many duplicates.
>
> _bt_firsteq shouldn't exist at all; the only routine that calls it
> is _bt_binsrch, which does a fast binary search of the index page.
> _bt_binsrch should be fixed so that the binary search logic does the
> right thing for equal-key cases, rather than degrading to a linear
> search. I am less confident that I understand _bt_findsplitloc's place
> in the great scheme of things, but it could certainly be revised to use
> a binary search rather than linear scan.
>
> This benchmark is clearly overemphasizing the equal-key case, but
> I think it ought to be fixed independently of whether we want to
> look good on a dubious benchmark ... equal keys are not uncommon in
> real-world scenarios after all.
>
> Next question is do we want to risk twiddling this code so soon before
> 6.5, or wait till after?
>
> regards, tom lane
>
>
--
Bruce Momjian | http://www.op.net/~candle
[email protected] | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026
^ permalink raw reply [nested|flat] 1610+ messages in thread
* Re: [HACKERS] strange behavior of UPDATE
1999-09-21 19:42 Re: [HACKERS] strange behavior of UPDATE Bruce Momjian <[email protected]>
@ 1999-09-22 01:16 ` Tom Lane <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Tom Lane @ 1999-09-22 01:16 UTC (permalink / raw)
To: Bruce Momjian <[email protected]>; +Cc: Edmund Mergl <[email protected]>; pgsql-hackers
Bruce Momjian <[email protected]> writes:
> Tom, I assume this is done, right?
Only partly. I changed _bt_binsrch to use a pure binary search,
but didn't yet get around to fixing _bt_findsplitloc (it's more
complicated :-().
Vadim seemed to think that a better solution would be to fix the
comparison rules so that no two entries are ever considered to have
equal keys anyway. So I put my change on the back burner ... but if
his change doesn't happen, mine ought to get done.
>> I wrote:
>>>> then a possible explanation for the problem would be that our
>>>> btree index code isn't very fast when there are large numbers of
>>>> identical keys.
>>
>> Ah-hah, a lucky guess! I went back and looked at the profile stats
>> I'd extracted from Edmund's "update" example. This Linux box has
>> the same semi-functional gprof as someone else was using a while
>> ago --- the timings are bogus, but the call counts seem right.
>> And what I find are entries like this:
>>
>> 0.00 0.00 284977/284977 _bt_binsrch [3174]
>> [3177] 0.0 0.00 0.00 284977 _bt_firsteq [3177]
>> 0.00 0.00 21784948/24713758 _bt_compare [3169]
>>
>> 0.00 0.00 426/35632 _bt_split [53]
>> 0.00 0.00 35206/35632 _bt_insertonpg [45]
>> [3185] 0.0 0.00 0.00 35632 _bt_findsplitloc [3185]
>> 0.00 0.00 5093972/8907411 _bt_itemcmp [3171]
>>
>> In other words, _bt_firsteq is averaging almost 100 comparisons per
>> call, _bt_findsplitloc well over that. Both of these routines are
>> evidently designed on the assumption that there will be relatively
>> few duplicate keys --- they reduce to linear scans when there are
>> many duplicates.
>>
>> _bt_firsteq shouldn't exist at all; the only routine that calls it
>> is _bt_binsrch, which does a fast binary search of the index page.
>> _bt_binsrch should be fixed so that the binary search logic does the
>> right thing for equal-key cases, rather than degrading to a linear
>> search. I am less confident that I understand _bt_findsplitloc's place
>> in the great scheme of things, but it could certainly be revised to use
>> a binary search rather than linear scan.
>>
>> This benchmark is clearly overemphasizing the equal-key case, but
>> I think it ought to be fixed independently of whether we want to
>> look good on a dubious benchmark ... equal keys are not uncommon in
>> real-world scenarios after all.
>>
>> Next question is do we want to risk twiddling this code so soon before
>> 6.5, or wait till after?
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 7abdc62f41..586bec8466 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4594,6 +4594,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4651,11 +4652,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
- year_sign, abs(year), abs(mon),
- day_sign, (long long) i64abs(mday),
- sec_sign, (long long) i64abs(hour), abs(min));
- cp += strlen(cp);
+ data_len = sprintf(cp, "%c%d-%d %c%lld %c%lld:%02d:",
+ year_sign, abs(year), abs(mon),
+ day_sign, (long long) i64abs(mday),
+ sec_sign, (long long) i64abs(hour), abs(min));
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4665,16 +4666,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%lld %lld:%02d:",
- (long long) mday, (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld %lld:%02d:",
+ (long long) mday, (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%lld:%02d:", (long long) hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%lld:%02d:", (long long) hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.45.1
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20240912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
* [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls
@ 2024-09-11 04:21 Andy Fan <[email protected]>
0 siblings, 0 replies; 1610+ messages in thread
From: Andy Fan @ 2024-09-11 04:21 UTC (permalink / raw)
sprintf return the number of characters printed (not including the
trailing `\0'), so it is exactly same as strlen. so we can reuse that
value and avoid a strlen call.
---
src/backend/utils/adt/datetime.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 8f25c15fcfc..83c3c85305b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4717,6 +4717,7 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
int fsec = itm->tm_usec;
bool is_before = false;
bool is_zero = true;
+ int data_len;
/*
* The sign of year and month are guaranteed to match, since they are
@@ -4774,11 +4775,11 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
char sec_sign = (hour < 0 || min < 0 ||
sec < 0 || fsec < 0) ? '-' : '+';
- sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%c%d-%d %c%" PRId64 " %c%" PRId64 ":%02d:",
year_sign, abs(year), abs(mon),
day_sign, i64abs(mday),
sec_sign, i64abs(hour), abs(min));
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
@@ -4788,16 +4789,16 @@ EncodeInterval(struct pg_itm *itm, int style, char *str)
}
else if (has_day)
{
- sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
+ data_len = sprintf(cp, "%" PRId64 " %" PRId64 ":%02d:",
mday, hour, min);
- cp += strlen(cp);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
else
{
- sprintf(cp, "%" PRId64 ":%02d:", hour, min);
- cp += strlen(cp);
+ data_len = sprintf(cp, "%" PRId64 ":%02d:", hour, min);
+ cp += data_len;
cp = AppendSeconds(cp, sec, fsec, MAX_INTERVAL_PRECISION, true);
*cp = '\0';
}
--
2.43.0
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
filename=v20260912-0004-Make-printtup-a-bit-faster-intermediate-st.patch
^ permalink raw reply [nested|flat] 1610+ messages in thread
end of thread, other threads:[~2024-09-11 04:21 UTC | newest]
Thread overview: 1610+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
1999-09-21 19:42 Re: [HACKERS] strange behavior of UPDATE Bruce Momjian <[email protected]>
1999-09-22 01:16 ` Tom Lane <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20240912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls Andy Fan <[email protected]>
2024-09-11 04:21 [PATCH v20260912 2/4] Continue to remove some unnecesary strlen calls 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