DML 및 CTAS 명령: RELY 속성이 설정된 경우 잘못된 결과 세트가 발생할 가능성(보류 중)¶
이 동작 변경 번들을 활성화하면 대상 테이블 에 RELY 속성 이 설정된 경우 특정 DML 및 CTAS 문 에 대한 최적화가 잘못된 결과를 생성할 수 있습니다.
- 변경 전:
UNIQUE 및 PRIMARY KEY 제약 조건 이 있는 테이블의 DML 및 CTAS 문은 DISTINCT 및 GROUP BY 작업에 적용되는 최적화의 대상이 아닙니다. (최적화 도구는 중복 그룹화 열을 정리합니다.)
문제의 최적화는 현재 SELECT 문에만 적용되므로 RELY 속성이 제약 조건으로 설정되어 참조 무결성 위반이 발생하는 경우 잘못된 데이터가 삽입될 위험이 없습니다.
- 변경 후:
DML 및 CTAS 문은 이제 UNIQUE 및 PRIMARY KEY 제약 조건이 있는 테이블에서 SELECT 문에 적용되는 것과 동일한 최적화를 적용받을 수 있습니다.
RELY 속성이 제약 조건으로 설정되어 있고 참조 무결성 위반이 발생하면 잘못된 데이터가 삽입될 수 있습니다.
배경 정보¶
Snowflake는 사용자가 정의한 제약 조건 및 속성에 관계없이 표준 테이블에 참조 무결성 을 적용하지 않습니다. (이 규칙의 예외는 하이브리드 테이블 이며, 여기에는 특정 제약 조건이 필수이며 강제 적용됩니다.)
RELY 제약 조건 속성은 테이블 데이터에 참조 무결성이 있다고 판단(또는 데이터가 Snowflake로 로드되기 전에 다른 애플리케이션이 이를 적용)함을 선언합니다. RELY 속성은 명시적으로 설정해야 하며 기본적으로 사용하도록 설정되어 있지 않습니다. 이 속성을 설정하면 의도하지 않은 동작 및/또는 예상치 못한 결과가 발생할 수 있다는 사실은 이미 문서화되어 있습니다.
RELY 제약 조건 속성을 사용하여 테이블 식별자 지정하기¶
PRIMARY KEY 또는 UNIQUE 제약 조건에 대해 RELY 속성이 설정된 테이블을 찾으려면 이 쿼리를 실행합니다.
SELECT table_schema, table_name
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE RELY ='YES'
AND (constraint_type = 'PRIMARY KEY' OR constraint_type = 'UNIQUE');
최적화가 적용될 때 문제가 발생할 것으로 예상되는 경우 제약 조건을 삭제하거나 RELY 속성을 설정하지 않는 것이 좋습니다.
Ref: 1902