array must have even number of elements

From: Susan Hurst <susan(dot)hurst(at)brookhurstdata(dot)com>
To: pgsql-general(at)lists(dot)postgresql(dot)org
Subject: array must have even number of elements
Date: 2018-09-20 17:55:05
Message-ID: c0c90d03d4c8554045cb0e77bb81adf9@mail.brookhurstdata.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general


Why must an array have an even number of elements? I need to use a
trigger function on any table, some of which may have an odd number of
columns that I want to cleanse before inserting/updating.

Is there a workaround for this?

ERROR: array must have even number of elements

SQL state: 2202E

Context: SQL statement "SELECT ($1 #=
hstore(array[trim(replace(regexp_replace($1.c,'( ){2,}',' ','g'),' ','
')),trim(replace(regexp_replace($1.vc,'( ){2,}',' ','g'),' ','
')),trim(replace(regexp_replace($1.t,'( ){2,}',' ','g'),' ',' '))])).*"
PL/pgSQL function store.trim_string_before_dml() line 44 at EXECUTE

-- my test table
create table dm.trg_test (c character(8), vc varchar(16), t text);
insert into dm.trg_test (c,vc,t) values ('ctest',' vctest ','
ttest ');

-- code snippet that produced the error.
-- new will be substituted for $1 during execution with using clause
l_query_string := 'select ($1 #= hstore(array[' || l_column_list ||
'])).*';
execute format(l_query_string) using new into new;
return new;

Thanks for your help!

--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Susan E Hurst
Principal Consultant
Brookhurst Data LLC
Email: susan(dot)hurst(at)brookhurstdata(dot)com
Mobile: 314-486-3261

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Pavel Stehule 2018-09-20 18:04:45 Re: array must have even number of elements
Previous Message Laurenz Albe 2018-09-20 16:29:07 Re: Advice on machine specs for growth