Hi All,

I found this error in all versions of pgadmin4 on windows. When I create a cast 
like this:

CREATE FUNCTION public.text(smallint) RETURNS text STRICT IMMUTABLE LANGUAGE 
SQL AS 'SELECT textin(int2out($1));';
CREATE CAST (smallint AS text) WITH FUNCTION public.text(smallint) AS IMPLICIT;

Which I need for backward compatibility in our programm then I get the 
following error when I click on a some tables with the "SQL" TAB open.


Error retrieving the information - INTERNAL SERVER ERROR

ERROR: operator is not unique: unknown || smallint
LINE 8: ELSE ARRAY['UNKNOWN OPTION' || i.indoption[i.attnum - 1]...
^
HINT: Could not choose a best candidate operator. You might need to add 
explicit type casts.

Here the complete statement from the pglog-file

2018-11-08 09:33:14 CET [516]: [1-1] user=,db=,app=pgAdmin 4 - 
DB:ascarabmpg,client=::1 ERROR:  operator is not unique: unknown || smallint at 
character 266
2018-11-08 09:33:14 CET [516]: [2-1] user=,db=,app=pgAdmin 4 - 
DB:ascarabmpg,client=::1 HINT:  Could not choose a best candidate operator. You 
might need to add explicit type casts.
2018-11-08 09:33:14 CET [516]: [3-1] user=,db=,app=pgAdmin 4 - 
DB:ascarabmpg,client=::1 STATEMENT:
SELECT
                    i.indexrelid,
                    CASE i.indoption[i.attnum - 1]
                    WHEN 0 THEN ARRAY['ASC', 'NULLS LAST']
                    WHEN 1 THEN ARRAY['DESC', 'NULLS FIRST']
                    WHEN 2 THEN ARRAY['ASC', 'NULLS FIRST']
                    WHEN 3 THEN ARRAY['DESC', 'NULLS  ']
                    ELSE ARRAY['UNKNOWN OPTION' || i.indoption[i.attnum - 1], 
'']
                    END::text[] AS options,
                    i.attnum,
                    pg_get_indexdef(i.indexrelid, i.attnum, true) as attdef,
                    CASE WHEN (o.opcdefault = FALSE) THEN o.opcname ELSE null 
END AS opcname,
                    op.oprname AS oprname,
                               CASE WHEN length(nspc.nspname) > 0 AND 
length(coll.collname) > 0  THEN
                                 concat(quote_ident(nspc.nspname), '.', 
quote_ident(coll.collname))
                               ELSE '' END AS collnspname
                FROM (
                      SELECT
                          indexrelid, i.indoption, i.indclass,
                          unnest(ARRAY(SELECT generate_series(1, i.indnatts) AS 
n)) AS attnum
                      FROM
                          pg_index i
                      WHERE i.indexrelid = 1293689::OID
                ) i
                    LEFT JOIN pg_opclass o ON (o.oid = i.indclass[i.attnum - 1])
                    LEFT OUTER JOIN pg_constraint c ON (c.conindid = 
i.indexrelid)
                    LEFT OUTER JOIN pg_operator op ON (op.oid = 
c.conexclop[i.attnum])
                    LEFT JOIN pg_attribute a ON (a.attrelid = i.indexrelid AND 
a.attnum = i.attnum)
                    LEFT OUTER JOIN pg_collation coll ON a.attcollation=coll.oid
                    LEFT OUTER JOIN pg_namespace nspc ON 
coll.collnamespace=nspc.oid
                ORDER BY i.attnum;


Greetings

Jürgen Spatz

Reply via email to