Thread
Commits
-
Offer pnstrdup to frontend code
- 0b9466fce2cf 13.0 landed
-
adding strndup
Alvaro Herrera <alvherre@2ndquadrant.com> — 2019-12-04T14:40:21Z
I just proposed in https://postgr.es/m/0191204143715.GA17312@alvherre.pgsql the addition of strndup() to our src/port. I think this should be pretty uncontroversial, but wanted to give a heads-up outside that thread. I attach the patch here for completeness. -- Álvaro Herrera http://www.twitter.com/alvherre
-
Re: adding strndup
Tom Lane <tgl@sss.pgh.pa.us> — 2019-12-04T15:54:53Z
Alvaro Herrera <alvherre@2ndquadrant.com> writes: > I just proposed in > https://postgr.es/m/0191204143715.GA17312@alvherre.pgsql the addition of > strndup() to our src/port. > I think this should be pretty uncontroversial, but wanted to give a > heads-up outside that thread. I attach the patch here for completeness. Grepping, I notice that ecpg has an ecpg_strndup; should that be replaced with this? regards, tom lane
-
Re: adding strndup
Andres Freund <andres@anarazel.de> — 2019-12-04T18:04:57Z
Hi, On 2019-12-04 11:40:21 -0300, Alvaro Herrera wrote: > I just proposed in > https://postgr.es/m/0191204143715.GA17312@alvherre.pgsql the addition of > strndup() to our src/port. > > I think this should be pretty uncontroversial, but wanted to give a > heads-up outside that thread. I attach the patch here for completeness. Well, I personally think it's a bad idea to add further implementations for functions that are in standar libraries on some systems. Especially, but not exclusively, when made available for frontend code, where it's not unlikely that there might be other applications having their own implementations of strndup/whatever. Besides that reason, I think AC_REPLACE_FUNCS is just a bad mechanism, that yields fragmented source code and needs to implemented differently for windows. The code additionally often will also be badly optimized in general, due to tiny translation units without relevant functions having knoweldge about each other. I'd just provide pnstrdup() in the frontend, without adding strndup(). I also see no point in adding both pnstrdup() and pg_strndup(). I'm fine with moving towards pg_strndup(), but then we just ought to remove pnstrdup(). - Andres
-
Re: adding strndup
Tom Lane <tgl@sss.pgh.pa.us> — 2019-12-04T18:58:49Z
Andres Freund <andres@anarazel.de> writes: > On 2019-12-04 11:40:21 -0300, Alvaro Herrera wrote: >> I think this should be pretty uncontroversial, but wanted to give a >> heads-up outside that thread. I attach the patch here for completeness. > I'd just provide pnstrdup() in the frontend, without adding strndup(). +1 --- seems like a bunch more mechanism than is warranted. Let's just open-code it in pnstrdup. We can rely on strnlen, since that's already supported, and there's not much more there beyond that. > I also see no point in adding both pnstrdup() and pg_strndup(). I'm fine > with moving towards pg_strndup(), but then we just ought to remove > pnstrdup(). There's a fair number of uses of pnstrdup in the backend. While it wouldn't be too painful to rename them, I'm not sure I see the point. (What I'd really argue for, if we did rename, is "pstrndup".) regards, tom lane
-
Re: adding strndup
Alvaro Herrera <alvherre@2ndquadrant.com> — 2019-12-04T19:05:01Z
On 2019-Dec-04, Tom Lane wrote: > Andres Freund <andres@anarazel.de> writes: > > On 2019-12-04 11:40:21 -0300, Alvaro Herrera wrote: > >> I think this should be pretty uncontroversial, but wanted to give a > >> heads-up outside that thread. I attach the patch here for completeness. > > > I'd just provide pnstrdup() in the frontend, without adding strndup(). > > +1 --- seems like a bunch more mechanism than is warranted. Let's > just open-code it in pnstrdup. We can rely on strnlen, since that's > already supported, and there's not much more there beyond that. I can get behind that ... it makes the patch a lot smaller. I'm gonna send an updated version in a jiffy. > > I also see no point in adding both pnstrdup() and pg_strndup(). I'm fine > > with moving towards pg_strndup(), but then we just ought to remove > > pnstrdup(). > > There's a fair number of uses of pnstrdup in the backend. While it > wouldn't be too painful to rename them, I'm not sure I see the point. > (What I'd really argue for, if we did rename, is "pstrndup".) *shrug* I also looked for pstrndup() first. And Peter E also in https://postgr.es/m/1339713732.11971.79.camel@vanquo.pezone.net submitted an implementation of pstrndup(). I'm not opposed to renaming it, but I hesitate to do it at the same time as putting it in pgport. -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
-
Re: adding strndup
Alvaro Herrera <alvherre@2ndquadrant.com> — 2019-12-04T22:01:46Z
On 2019-Dec-04, Alvaro Herrera wrote: > On 2019-Dec-04, Tom Lane wrote: > > > Andres Freund <andres@anarazel.de> writes: > > > On 2019-12-04 11:40:21 -0300, Alvaro Herrera wrote: > > >> I think this should be pretty uncontroversial, but wanted to give a > > >> heads-up outside that thread. I attach the patch here for completeness. > > > > > I'd just provide pnstrdup() in the frontend, without adding strndup(). > > > > +1 --- seems like a bunch more mechanism than is warranted. Let's > > just open-code it in pnstrdup. We can rely on strnlen, since that's > > already supported, and there's not much more there beyond that. > > I can get behind that ... it makes the patch a lot smaller. Here it is. I noticed that ECPG's copy was setting errno. I had forgot to do that in my previous patch, but on second look, malloc failure already sets it, so doing it again is pointless. -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
-
Re: adding strndup
Tom Lane <tgl@sss.pgh.pa.us> — 2019-12-04T22:17:10Z
Alvaro Herrera <alvherre@2ndquadrant.com> writes: >> I can get behind that ... it makes the patch a lot smaller. > Here it is. LGTM. > I noticed that ECPG's copy was setting errno. I had forgot to do that > in my previous patch, but on second look, malloc failure already sets > it, so doing it again is pointless. Right. regards, tom lane