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. >