Thread

  1. off-by-one mistake in array code error reporting

    Alexey Klyukin <alexk@commandprompt.com> — 2011-01-31T08:19:25Z

    Hi,
    
    While working on PL/Perl patch for arrays as input arguments I've noticed that
    PostgreSQL reports one less dimension in the 'number of array dimensions (%d)
    exceeds the maximum allowed (%d)", i.e.
    
    select '{{{{{{{1,2},{3,4}},{{5,6},{7,8}}},{{{9,10},{11,12}},{{13,14},{15,16}}}},                                                                     {{{{17,18},{19,20}},{{21,22},{23,24}}},{{{25,26},{27,28}},{{29,30},{31,32}}}}}, {{{{{1,2},{3,4}},{{5,6},{7,8}}},{{{9,10},{11,12}},{{13,14},{15,16}}}},          {{{{17,18},{19,20}},{{21,22},{23,24}}},{{{25,26},{27,28}},{{29,30},{31,32}}}}}},                                                                                {{{{{{1,2},{3,4}},{{5,6},{7,8}}},{{{9,10},{11,12}},{{13,14},{15,16}}}},         {{{{17,18},{19,20}},{{21,22},{23,24}}},{{{25,26},{27,28}},{{29,30},{31,32}}}}}, {{{{{1,2},{3,4}},{{5,6},{7,8}}},{{{9,10},{11,12}},{{13,14},{15,16}}}},          {{{{17,18},{19,20}},{{21,22},{23,24}}},{{{25,26},{27,28}},{{29,30},{31,32}}}}}}}'                                                                               ::int[];
    
    ERROR:  number of array dimensions (6) exceeds the maximum allowed (6)
    
    Attached is the simple fix for that.
    
    /A
    
    --
    Alexey Klyukin
    The PostgreSQL Company - Command Prompt, Inc.
    
    
    
    
  2. Re: off-by-one mistake in array code error reporting

    Itagaki Takahiro <itagaki.takahiro@gmail.com> — 2011-02-01T06:00:23Z

    On Mon, Jan 31, 2011 at 17:19, Alexey Klyukin <alexk@commandprompt.com> wrote:
    > While working on PL/Perl patch for arrays as input arguments I've noticed that
    > PostgreSQL reports one less dimension in the 'number of array dimensions (%d)
    > exceeds the maximum allowed (%d)", i.e.
    >
    > select '{{{{{{{1,2},{3,4}},{{5,6},{7,8}}},{{{9,10},{11,12}},{{13,14},{15,16}}}},                                                                     {{{{17,18},{19,20}},{{21,22},{23,24}}},{{{25,26},{27,28}},{{29,30},{31,32}}}}}, {{{{{1,2},{3,4}},{{5,6},{7,8}}},{{{9,10},{11,12}},{{13,14},{15,16}}}},          {{{{17,18},{19,20}},{{21,22},{23,24}}},{{{25,26},{27,28}},{{29,30},{31,32}}}}}},                                                                                {{{{{{1,2},{3,4}},{{5,6},{7,8}}},{{{9,10},{11,12}},{{13,14},{15,16}}}},         {{{{17,18},{19,20}},{{21,22},{23,24}}},{{{25,26},{27,28}},{{29,30},{31,32}}}}}, {{{{{1,2},{3,4}},{{5,6},{7,8}}},{{{9,10},{11,12}},{{13,14},{15,16}}}},          {{{{17,18},{19,20}},{{21,22},{23,24}}},{{{25,26},{27,28}},{{29,30},{31,32}}}}}}}'                                                                               ::int[];
    >
    > ERROR:  number of array dimensions (6) exceeds the maximum allowed (6)
    >
    > Attached is the simple fix for that.
    
    Thanks. I found one more same bug in PL/pgSQL.
    
    s=# DO $$ DECLARE a int[]; BEGIN a = (ARRAY[1])[1][1][1][1][1][1][1]; END; $$;
    ERROR:  number of array dimensions (6) exceeds the maximum allowed (6)
    
    -- 
    Itagaki Takahiro