Re: Variable array sizes with PQexecParams

From: "Garcia, Joshua" <Joshua(dot)Garcia(at)xerox(dot)com>
To: "Tom Lane" <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: <pgsql-novice(at)postgresql(dot)org>
Subject: Re: Variable array sizes with PQexecParams
Date: 2006-06-26 20:39:56
Message-ID: E00A3B716AD4C84FB97E42367015E8A00BFF0F@usa5911mf01.na.xerox.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-novice

(Sorry I sent this to you twice, Tom. I forgot to CC to the
pgsql-novice list.)

Thanks a lot, Tom.

One follow-up question:
If I want the number of elements in that array to vary with each
execution, then I'd have to use the $1="'{foo,bar}'" method right?
Then, I'd construct that string based on the number of elements I have
for that execution.

Josh

-----Original Message-----
From: Tom Lane [mailto:tgl(at)sss(dot)pgh(dot)pa(dot)us]
Sent: Monday, June 26, 2006 1:32 PM
To: Garcia, Joshua
Cc: pgsql-novice(at)postgresql(dot)org
Subject: Re: [NOVICE] Variable array sizes with PQexecParams

"Garcia, Joshua" <Joshua(dot)Garcia(at)xerox(dot)com> writes:
> I want to use PQexecParams to insert into a field that takes an array
of
> varchars. I tried something like:
> INSERT INTO table1(column1) VALUES ('{$1,$2}')
> But, this just inserts {$1,$2} into the field.

Well, yeah. If it did anything else that'd be a catastrophic bug.

Try something like

INSERT INTO table1(column1) VALUES (ARRAY[$1,$2])

For varchar this will probably work as-is, for other datatypes you might
need to add explicit casts to determine the array element types, eg

INSERT INTO table1(column1) VALUES (ARRAY[$1::integer,$2::integer])

Another possibility is to treat the whole array value as one parameter:

INSERT INTO table1(column1) VALUES ($1)

where the value of $1 is like "{foo,bar}", but this gets into having to
quote the data values correctly to make them valid array elements. The
first way is probably safer.

regards, tom lane

In response to

Responses

Browse pgsql-novice by date

  From Date Subject
Next Message Tom Lane 2006-06-26 21:04:48 Re: Variable array sizes with PQexecParams
Previous Message Tom Lane 2006-06-26 20:32:24 Re: Variable array sizes with PQexecParams