Hi,
When I was restoring a dump on 9.1.4 (created on 9.0.7) I got this error:
ERROR: function
imported_credentials_generalized_external_id(imported_email3) does not
exist
LINE 1: ...ed_external_i_idx ON imported_email3 USING btree (imported_c...
^
HINT: No function matches the given name and argument types. You
might need to add explicit type casts.
On this index creation statement:
CREATE INDEX imported_email3_imported_credentials_generalized_external_i_idx
ON imported_email3 USING btree
(imported_credentials_generalized_external_id(imported_email3.*));
Looking on the function and index in the original database I found a
very strange situation when the argument data type of the function
differs from the type of the argument in the function's signature in
the index.
mirtesen-0-3=# \df imported_credentials_generalized_external_id
List of functions
-[ RECORD 1 ]-------+---------------------------------------------
Schema | public
Name | imported_credentials_generalized_external_id
Result data type | text
Argument data types | i_row imported_email
Type | normal
mirtesen-0-3=# \d
imported_email3_imported_credentials_generalized_external_i_idx
Index
"public.imported_email3_imported_credentials_generalized_external_i_idx"
Column | Type |
Definition
----------------------------------------------+------+-----------------------------------------------------------------
imported_credentials_generalized_external_id | text |
imported_credentials_generalized_external_id(imported_email3.*)
btree, for table "public.imported_email3"
I managed to reproduce this issue by creating another table with LIKE.
mirtesen-0-3=# CREATE TABLE imported_email4 (LIKE imported_email3
INCLUDING ALL);
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index
"imported_email4_pkey" for table "imported_email4"
CREATE TABLE
And what I have found is that it just renamed the table name in the
function's signature in the index.
mirtesen-0-3=# \d
imported_email4_imported_credentials_generalized_external_i_idx
Index
"public.imported_email4_imported_credentials_generalized_external_i_idx"
Column | Type |
Definition
----------------------------------------------+------+-----------------------------------------------------------------
imported_credentials_generalized_external_id | text |
imported_credentials_generalized_external_id(imported_email4.*)
btree, for table "public.imported_email4"
I think it would be useful to do some checks here.
Thank you.
--
Sergey Konoplev
a database architect, software developer at PostgreSQL-Consulting.com
http://www.postgresql-consulting.com
Jabber: gray.ru@gmail.com Skype: gray-hemp Phone: +79160686204