Thread
Commits
-
Fix over-allocation of space for array_out()'s result string.
- 87d9bbca13f9 12.0 landed
- bfdd02f88b96 11.0 landed
- ac863108f56b 9.6.11 landed
- 7ecdeb5f5476 9.3.25 landed
- 6ed095edb776 9.5.15 landed
- 103511723ee2 10.6 landed
- 028fc0bac974 9.4.20 landed
-
[patch]overallocate memory for curly braces in array_out
Keiichi Hirobe <chalenge.akane@gmail.com> — 2018-09-23T11:36:55Z
Hi, Attached is a patch that fixes a bug for miscounting total number of curly braces in output string in array_out. Example1 {{1,2,3},{4,5,6}} -> dims[0] = 2, dims[1]= 3 - Without the patch 8 - After 3 Example2 N size one-dimensional array -> dims[0] = N - Without the patch N - After 1 I used gdb to confirm the above behavior. Cheers, Keiichi Hirobe -
Re: [patch]overallocate memory for curly braces in array_out
Tom Lane <tgl@sss.pgh.pa.us> — 2018-09-24T14:46:42Z
Keiichi Hirobe <chalenge.akane@gmail.com> writes: > Attached is a patch that fixes a bug > for miscounting total number of curly braces in output string in array_out. Wow, good catch! Testing this, I found there's a second way in which the space calculation is off: it always allocated one more byte than required, as a result of counting one more comma than is really required. That's not nearly as significant as the curly-brace miscount, but it still got in the way of doing this: *** 1234,1239 **** --- 1243,1251 ---- #undef APPENDSTR #undef APPENDCHAR + /* Assert that we calculated the string length accurately */ + Assert(overall_length == (p - retval + 1)); + pfree(values); pfree(needquotes); which seemed to me like a good idea now that we know this code isn't so perfect as all that. Will push shortly. regards, tom lane
-
Re: [patch]overallocate memory for curly braces in array_out
Keiichi Hirobe <chalenge.akane@gmail.com> — 2018-09-26T12:04:51Z
Hi, Thanks for the reply. I am not sure whether to fix another bug, but I fixed and I attached a new patch, please check it. Please note that I inserted a line for updating "overall_length" at line 1185. I checked below case. select ARRAY[ARRAY[1,2,3],ARRAY[4,5,6]]; (regular case) select '[3:4][2:4]={{1,2,3},{4,5,6}}'::_int4; (needdims case) select ARRAY['a"bc','def']; (needquote case) Cheers, Keiichi Hirobe 2018年9月24日(月) 23:46 Tom Lane <tgl@sss.pgh.pa.us>: > Keiichi Hirobe <chalenge.akane@gmail.com> writes: > > Attached is a patch that fixes a bug > > for miscounting total number of curly braces in output string in > array_out. > > Wow, good catch! > > Testing this, I found there's a second way in which the space calculation > is off: it always allocated one more byte than required, as a result of > counting one more comma than is really required. That's not nearly as > significant as the curly-brace miscount, but it still got in the way of > doing this: > > *** 1234,1239 **** > --- 1243,1251 ---- > #undef APPENDSTR > #undef APPENDCHAR > > + /* Assert that we calculated the string length accurately */ > + Assert(overall_length == (p - retval + 1)); > + > pfree(values); > pfree(needquotes); > > > which seemed to me like a good idea now that we know this code isn't > so perfect as all that. > > Will push shortly. > > regards, tom lane > -
Re: [patch]overallocate memory for curly braces in array_out
Tom Lane <tgl@sss.pgh.pa.us> — 2018-09-28T00:23:07Z
Keiichi Hirobe <chalenge.akane@gmail.com> writes: > I am not sure whether to fix another bug, but I fixed and I attached a new > patch, > please check it. I think this duplicates what I already committed at https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=87d9bbca13f9c6b8f6ee986f0e399cb83bd731d4 regards, tom lane
-
Re: [patch]overallocate memory for curly braces in array_out
Keiichi Hirobe <chalenge.akane@gmail.com> — 2018-10-09T14:12:40Z
Sorry, I did not notice that you had already pushed it. Thank you for quick action. Cheers, Keiichi Hirobe 2018年9月28日(金) 9:23 Tom Lane <tgl@sss.pgh.pa.us>: > Keiichi Hirobe <chalenge.akane@gmail.com> writes: > > I am not sure whether to fix another bug, but I fixed and I attached a > new > > patch, > > please check it. > > I think this duplicates what I already committed at > > > https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=87d9bbca13f9c6b8f6ee986f0e399cb83bd731d4 > > regards, tom lane >