Użyj wyraźnego rzutowania typu:
SELECT language, to_tsvector(language::regconfig, 'hello world') FROM languages;
Lub zmień kolumnę languages.language
aby wpisać regconfig
. Zobacz odpowiedź @Swav.
Dlaczego?
Postgres umożliwia przeciążanie funkcji. Sygnatury funkcji są definiowane przez ich (opcjonalnie schemat -kwalifikowany) nazwisko plus (lista) typ parametru wejściowego (s). Dwuparametrowa forma to_tsvector()
oczekuje typu regconfig
jako pierwszy parametr:
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
Jeśli żadna istniejąca funkcja nie pasuje dokładnie , zasady rozpoznawania typów funkcji decydują o najlepszym dopasowaniu — jeśli takie istnieje. To się powiodło dla to_tsvector('english', 'hello world')
, z 'english'
będąc nieopisanym literałem ciągu . Ale kończy się niepowodzeniem z parametrem wpisanym varchar
, ponieważ nie ma zarejestrowanego niejawnego rzutuj z varchar
do regconfig
. Instrukcja:
Odrzuć funkcje kandydujące, dla których typy danych wejściowych nie pasują i nie mogą zostać przekonwertowane (za pomocą niejawnego konwersji), aby dopasować. nieznane literały zakłada się, że w tym celu można je zamienić na cokolwiek.
Pogrubiony nacisk na kopalnię.
Zarejestrowane rzutowania dla 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
Wyjaśnienie dla castcontext
:
castcontext char
Wskazuje, w jakich kontekstach można wywoływać obsadę. e
oznacza tylko jako jawne rzutowanie (za pomocą CAST
lub ::
składnia). a
oznacza niejawnie w przypisaniu do kolumny docelowej, jak również jawnie. i
oznacza niejawnie w wyrażeniach, jak również w innych przypadkach.
Przeczytaj więcej o trzech różnych typach zadań w rozdziale TWORZENIE ODS.