Използвайте изрично прехвърляне на тип:
SELECT language, to_tsvector(language::regconfig, 'hello world') FROM languages;
Или променете колоната languages.language
за да въведете regconfig
. Вижте отговора на @Swav.
Защо?
Postgres позволява претоварване на функциите. Сигнатурите на функциите се дефинират от тяхната (по избор схема -квалифициран) име плюс (списъкът с) тип на входния параметър (с). Формата с 2 параметъра на to_tsvector()
очаква тип regconfig
като първи параметър:
SELECT proname, pg_get_function_arguments(oid)
FROM pg_catalog.pg_proc
WHERE proname = 'to_tsvector'
proname | pg_get_function_arguments
-------------+---------------------------
to_tsvector | text
to_tsvector | regconfig, text -- you are here
Ако няма съществуваща функция точно , правилата за разделителна способност на типа функция определят най-доброто съвпадение - ако има такова. Това е успешно за to_tsvector('english', 'hello world')
, с 'english'
е невписан литерал на низ . Но не успява с параметър въведен varchar
, защото няма регистриран имплицитен прехвърляне от varchar
към regconfig
. Ръководството:
Отхвърлете кандидат-функции, за които входните типове не съвпадат и не могат да бъдат преобразувани (с помощта на неявно преобразуване), за да съвпадне. неизвестни литерали се приема, че могат да бъдат конвертирани във всичко за тази цел.
Удебелен акцент мой.
Регистрираните предавания за regconfig
:
SELECT castsource::regtype, casttarget::regtype, castcontext
FROM pg_catalog.pg_cast
WHERE casttarget = 'regconfig'::regtype;
castsource | casttarget | castcontext
------------+------------+-------------
oid | regconfig | i
bigint | regconfig | i
smallint | regconfig | i
integer | regconfig | i
Обяснение за castcontext
:
castcontext char
Показва в какви контексти може да бъде извикано предаването.e
означава само като изрично предаване (използвайкиCAST
или::
синтаксис).a
означава имплицитно при присвояване на целева колона, както и изрично.i
означава имплицитно в изразите, както и в останалите случаи.
Прочетете повече за трите различни типа задания в главата СЪЗДАВАНЕ НА CAST.