>The solution is the same whether you upgrade or not: you need >to adjust your search_path to include the "oracle" schema, >or else explicitly qualify references to orafce functions.Thank you very much >for your help.
To use the to_date functions of Orafce 3.0.1, we created the following to_date function in the public schema of the old database. ----- CREATE OR REPLACE FUNCTION to_date(str text) RETURNS date AS $$ SELECT $1::date; $$ LANGUAGE sql IMMUTABLE STRICT; COMMENT ON FUNCTION public.to_date(text) IS 'Convert string to date'; ----- To avoid using a to_date function with the same name and parameter in the pg_catalog schema first, the search_path of the old database is set as follows: "$user", public, pg_catalog Make sure that public is searched before pg_catalog. After the database is upgraded, in order to solve the changes in Oracle 3.24, we have added oracle schema to the search_path, as shown below: "$user", public, oracle, pg_catalog The following error occurred when I ran my application. 42P13:ERROR:42P13: return type mismatch in function declared to return pg_catalog.date When I put the oracle schema at the end of the search_path, the problem was solved. The search_path settings without problems are as follows: "$user", public, pg_catalog, oracle Why does it report an error when i put oracle between public and pg_catalog? At 2023-04-20 01:18:15, "Tom Lane" <t...@sss.pgh.pa.us> wrote: >gzh <gzhco...@126.com> writes: >> Thank you for your prompt reply. >> Is there another solution if the database is not upgraded to 12.14? > >The solution is the same whether you upgrade or not: you need >to adjust your search_path to include the "oracle" schema, >or else explicitly qualify references to orafce functions. > > regards, tom lane