I tried that and it does indeed work. (With, of course, the appropriate
permissions to create the cast.)

So this makes me wonder--is there any downside or unwelcome side effects to
having such a cast?  And if not, why isn't it part of the default setup?

Cheers,
Ken

On Sat, Feb 21, 2015 at 3:34 AM, sridhar bamandlapally <
sridhar....@gmail.com> wrote:

> Hi
>
> Please see below, this works, way for implicit type casting
>
> bns=# CREATE TEMP TABLE foo (my_array varchar[]);
> CREATE TABLE
> bns=#
> bns=# INSERT INTO foo (my_array) SELECT '{TEST}';
> INSERT 0 1
> bns=#
> bns=# SELECT my_array[1],array_length(my_array,1) FROM foo;
>  my_array | array_length
> ----------+--------------
>  TEST     |            1
> (1 row)
>
> bns=#
> *bns=# INSERT INTO foo (my_array) SELECT DISTINCT '{TEST}';*
> *ERROR:  column "my_array" is of type character varying[] but expression
> is of type text*
> *LINE 1: INSERT INTO foo (my_array) SELECT DISTINCT '{TEST}';*
> *                                                   ^*
> *HINT:  You will need to rewrite or cast the expression.*
> bns=#
> bns=# CREATE CAST (text AS varchar[]) WITH INOUT AS IMPLICIT;
> CREATE CAST
> bns=#
> bns=# INSERT INTO foo (my_array) SELECT DISTINCT '{TEST}';            ----
> this works
> INSERT 0 1
> bns=#
> bns=#
>
>
> in previous mail, sorry for not mentioning varchar*"[]"*
>
> We did type cast implicit method to avoid application code changes for
> Oracle to PostgreSQL compatible
>
> Thanks
> Sridhar BN
>
>
>
> On Sat, Feb 21, 2015 at 9:38 AM, Ken Tanzer <ken.tan...@gmail.com> wrote:
>
>> I'm not able to run this unless I'm the Postgres super user.  But if I
>> run it as such, it tells me that cast already exists anyway.
>>
>> CREATE CAST (text AS varchar) WITH INOUT AS IMPLICIT;
>> ERROR:  cast from type text to type character varying already exists
>>
>> Of course this will work fine:
>> INSERT INTO foo (my_array) SELECT DISTINCT '{TEST}'::varchar[];
>>
>> I was mostly surprised by having DISTINCT added to a SELECT make things
>> break.  It may be too obscure an issue to be worth adding, but nothing on
>> the DISTINCT documentation suggests this possibility.
>>
>> "If DISTINCT is specified, all duplicate rows are removed from the result
>> set..."
>> http://www.postgresql.org/docs/9.0/static/sql-select.html#SQL-DISTINCT
>>
>> Cheers,
>> Ken
>>
>> On Fri, Feb 20, 2015 at 6:30 PM, sridhar bamandlapally <
>> sridhar....@gmail.com> wrote:
>>
>>> >>>ERROR:  column "my_array" is of type character varying[] but
>>> expression is of type text
>>>
>>> please try this below, may be this should help
>>>
>>> CREATE CAST (text AS varchar) WITH INOUT AS IMPLICIT;
>>>
>>> just for info:
>>> actually this should be available in default
>>>
>>>
>>> On Fri, Feb 20, 2015 at 9:48 AM, Ken Tanzer <ken.tan...@gmail.com>
>>> wrote:
>>>
>>>> Hi.  Here's a boiled down example of something that caught me by
>>>> surprise:
>>>>
>>>> ag_reach_test=> CREATE TEMP TABLE foo (my_array varchar[]);
>>>> CREATE TABLE
>>>> ag_reach_test=> INSERT INTO foo (my_array) SELECT '{TEST}';
>>>> INSERT 0 1
>>>> ag_reach_test=> SELECT my_array[1],array_length(my_array,1) FROM foo;
>>>>  my_array | array_length
>>>> ----------+--------------
>>>>  TEST     |            1
>>>> (1 row)
>>>>
>>>> ag_reach_test=> INSERT INTO foo (my_array) SELECT DISTINCT '{TEST}';
>>>> ERROR:  column "my_array" is of type character varying[] but expression
>>>> is of type text
>>>> LINE 1: INSERT INTO foo (my_array) SELECT DISTINCT '{TEST}';
>>>>                                                    ^
>>>> HINT:  You will need to rewrite or cast the expression.
>>>>
>>>> It's easy enough to add a cast, but I was curious if this was expected
>>>> and desired behavior.   Thanks.
>>>>
>>>> Ken
>>>>
>>>> --
>>>> AGENCY Software
>>>> A Free Software data system
>>>> By and for non-profits
>>>> *http://agency-software.org/ <http://agency-software.org/>*
>>>> *https://agency-software.org/demo/client
>>>> <https://agency-software.org/demo/client>*
>>>> ken.tan...@agency-software.org
>>>> (253) 245-3801
>>>>
>>>> Subscribe to the mailing list
>>>> <agency-general-requ...@lists.sourceforge.net?body=subscribe> to
>>>> learn more about AGENCY or
>>>> follow the discussion.
>>>>
>>>
>>>
>>
>>
>> --
>> AGENCY Software
>> A Free Software data system
>> By and for non-profits
>> *http://agency-software.org/ <http://agency-software.org/>*
>> *https://agency-software.org/demo/client
>> <https://agency-software.org/demo/client>*
>> ken.tan...@agency-software.org
>> (253) 245-3801
>>
>> Subscribe to the mailing list
>> <agency-general-requ...@lists.sourceforge.net?body=subscribe> to
>> learn more about AGENCY or
>> follow the discussion.
>>
>
>


-- 
AGENCY Software
A Free Software data system
By and for non-profits
*http://agency-software.org/ <http://agency-software.org/>*
*https://agency-software.org/demo/client
<https://agency-software.org/demo/client>*
ken.tan...@agency-software.org
(253) 245-3801

Subscribe to the mailing list
<agency-general-requ...@lists.sourceforge.net?body=subscribe> to
learn more about AGENCY or
follow the discussion.

Reply via email to