Я добавил столбец intarray в свою таблицу и успешно добавил данные в столбец.Оператор не существует: integer [] @@ integer []
CREATE TABLE my_table
(
...
tag_ids integer[],
)
При попытке запроса, как это:
SELECT id, tag_ids from my_table where tag_ids @@ ARRAY[1,2]
Я получаю эту ошибку:
ERROR: operator does not exist: integer[] @@ integer[]
LINE 1: SELECT id, tag_ids from core_tile where tag_ids @@ ARRAY[1,2...
^
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
я установил 9.3 через Homebrew для OS X, который я считаю, включает в себя intarray
модуль , и, как я уже сказал, я добавил столбцы массива и данные без проблем. Кроме этого:
SELECT * FROM pg_available_extensions
...
"intarray";"1.0";"";"functions, operators, and index support for 1-D arrays of integers"
Update:
Я подумал, что мне нужен конкретный индекс перед операторами будет работать. В примере the docs они добавляют индекс, как это:
CREATE INDEX my_index ON my_table USING GIST (tag_ids gist__int_ops);
Но когда я бегу, что я получаю:
ERROR: operator class "gist__int_ops" does not exist for access method "gist"
Я отсутствует расширение или что-то не так с запросом или что?
Есть несколько связанных (возможно полезных) [ответов, предлагающих создать расширение 'intarray'] (http://stackoverflow.com/search?q= [postgres] + create + extension + intarray + operator) для дополнительных операторов. –