내 테이블 :PostgreSQL의 인덱스 배열 사용자 정의 연산자 클래스 여기
CREATE TABLE
mytable
(
id INT NOT NULL PRIMARY KEY,
val int4range[]
);
내가 인덱스에 발 열 원하는 : 나는 다음과 함께했다
CREATE INDEX
ix_mytable_val
ON mytable
USING GIN (INT4RANGE(val, '[]')); // error, as is GIN(val)
:
를CREATE OPERATOR CLASS gin_int4range_ops
DEFAULT FOR TYPE int4range[] USING gin AS
OPERATOR 1 <(anyrange,anyrange),
OPERATOR 2 <=(anyrange,anyrange),
OPERATOR 3 =(anyrange,anyrange),
OPERATOR 4 >=(anyrange,anyrange),
OPERATOR 5 >(anyrange,anyrange),
FUNCTION 1 lower(anyrange),
FUNCTION 2 upper(anyrange),
FUNCTION 3 isempty(anyrange),
FUNCTION 4 lower_inc(anyrange),
FUNCTION 5 upper_inc(anyrange);
그러나 색인을 만들려고 할 때 오류가 발생합니다 (아래 오류). 그러나 DO $$ 블록 내에서 create를 호출하면 실행됩니다.
인덱스 작성이 실행되면 INSERT INTO에서 오류가 발생합니다. 나는 PG, 컴퓨터를 재부팅 시도하고이 문제를 해결하기 위해
OPERATOR 1 &&(anyrange,anyrange),
OPERATOR 2 <@(anyrange,anyrange),
OPERATOR 3 @>(anyrange,anyrange),
OPERATOR 4 =(anyrange,anyrange),
하고 DB를 진공 청소기로 청소 :
나는이 시도했다. CREATE OPERATOR 코드에 오류가 있다고 생각합니다."ERROR: cache lookup failed for type 1"
(int, int4range) 사용자 정의 유형의 배열을 색인화 할 수 있다면 더 좋을 것입니다.
문서, 포럼 등을 통해 꽤 오랜 시간을 보냈지 만이를 해결하는 방법을 이해하는 데 도움이되는 것은 없습니다. 즉, 작동하는 사용자 지정 연산자 클래스를 만드는 데 도움이되는 것은 없습니다.
감사합니다 많이! 색인을 만들려고 할 때 "오류 : 유형 1에서 캐시 조회가 실패했습니다"라는 메시지가 나타납니다. 나는 서버를 다시 시작했다. 어떤 아이디어? – IamIC
코드가 정상적으로 실행됩니다 ... 알아 내려고합니다. – revoua
나는 내가 생각할 수있는 모든 것을 시도했지만 그 오류는 여전히 발생합니다. – IamIC