Thread

Commits

  1. Fix over-allocation of space for array_out()'s result string.

  1. [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
    
  2. 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
    
    
    
  3. 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
    >
    
  4. 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
    
    
    
  5. 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
    >