| From: | Greg Stark <gsstark(at)mit(dot)edu> |
|---|---|
| To: | Stephen Frost <sfrost(at)snowman(dot)net> |
| Cc: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Alvaro Herrera <alvherre(at)commandprompt(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
| Subject: | Re: Pre-alloc ListCell's optimization |
| Date: | 2011-05-27 03:58:58 |
| Message-ID: | BANLkTimonxq4q2aVDohb5ww+MXZrRY8nmg@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
On Thu, May 26, 2011 at 8:52 PM, Stephen Frost <sfrost(at)snowman(dot)net> wrote:
> list_concat() does explicitly say that cells will
> be shared afterwards and that you can't pfree() either list (note that
> there's actually a couple cases currently that I discovered which were
> also addressed in the original patch where I commented out those
> pfree()'s).
So in traditional list it would splice the second argument onto the
end of the first list. This has a few effects that it sounds like you
haven't preserved. For example if I insert an element anywhere in
list2 -- including in the first few elements -- it's also inserted
into list1.
I'm not really sure we care about these semantics with our lists
though. It's not like they're supposed to be a full-featured lisp
emulator and it's not like the C code pulls any particularly clever
tricks with lists. I suspect we may have already broken these
semantics long ago but I haven't looked to see if that's the case.
--
greg
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Vaibhav Kaushal | 2011-05-27 03:59:17 | Re: Expression Evaluator used for creating the plan tree / stmt ? |
| Previous Message | Stephen Frost | 2011-05-27 03:52:35 | Re: Pre-alloc ListCell's optimization |