Bernie Huang wrote:
[Charset iso-8859-15 unsupported, filtering to ASCII...]
> Hi,
>
> Sorry for the subject, but it is driving me crazy that I spend my entire
> morning searching for this little bug. =(
>
> Well, I found it.
>
> I have a field using array (eg; col1 text[]) in Postgres, and it's a
> list of attributes. (eg; {"hi","hello","whatever","Empty",...})
>
> When I tried to update elements in the array via PHP script,
>
> $query = "update table
> set col1[1]='$var1',
> col1[2]='$var2',
> ...
> col1[4]='$var4'";
>
> it worked alright; however, when it came to the word 'Empty', it just
> wouldn't update. So, after a lot of struggle... )xp ... I finally
> replaced the word 'Empty' with 'None' or something alike, and it worked!
>
> Although this is a rare case, I thought I would just share this with you
> so you won't get tripped over it. Don't know if it's a PHP bug or a
> Postgres bug!
A Postgres bug:
pgsql=# create table t1 (a text[]);
CREATE
pgsql=# insert into t1 values ('{"foo","bar"}');
INSERT 18872 1
pgsql=# select * from t1;
a
---------------
{"foo","bar"}
(1 row)
pgsql=# update t1 set a[1] = 'new', a[2] = 'Empty';
UPDATE 1
pgsql=# select * from t1;
a
---------------
{"new","bar"}
(1 row)
pgsql=# update t1 set a[1] = 'next', a[2] = 'None';
UPDATE 1
pgsql=# select * from t1;
a
-----------------
{"next","None"}
(1 row)
Don't know where this might happen, but it's interesting that
our ORDBMS treats some "text" literal special. Looks like a
fogotten hack somewhere :-)
Jan
--
#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me. #
#================================================== [EMAIL PROTECTED] #