SQL 일반: 하위 쿼리에 대한 오류 메시지 변경 사항(보류 중)

주의

이 동작 변경 사항은 2026_01 번들에 포함되어 있습니다.

번들의 현재 상태는 번들 기록 섹션을 참조하십시오.

하위 쿼리에 대한 오류 메시지는 다음과 같은 방식으로 동작합니다.

변경 전:

하위 쿼리가 오류를 반환하는 경우 오류 메시지에 SQL 코드 또는 오브젝트에 대한 특정 정보가 포함되지 않습니다.

변경 후:

일부 하위 쿼리가 오류를 반환하는 경우 오류 메시지에 다음 세부 정보와 같은 특정 정보가 포함됩니다.

  • 하위 쿼리에서 지원되지 않는 코드의 줄과 위치.

  • 지원되지 않는 하위 쿼리를 포함하는 오브젝트의 이름(예: 뷰 또는 함수). 오브젝트가 중첩되면 가장 바깥쪽 오브젝트의 이름이 반환됩니다. 예를 들어, 지원되지 않는 하위 쿼리가 있는 뷰가 보안 뷰에 중첩된 경우 오류 메시지에 보안 뷰의 이름이 표시됩니다.

  • 지원되지 않는 하위 쿼리를 포함하는 오브젝트 유형의 이름(예: 마스킹 정책).

하위 쿼리와 관련된 오류 코드에는 변경 사항이 없습니다.

참고

이 동작 변경은 측면 조인 또는 사용자 정의 테이블 함수(UDTFs)에는 적용되지 않습니다.

다음 예제에서는 하위 쿼리에 대한 오류 메시지의 변경 사항을 보여줍니다.

3개의 테이블을 만들고 각각에 데이터를 삽입합니다.

CREATE TABLE testsub1(a INT, b INT)
  AS SELECT * FROM VALUES
    (1, 1),
    (2, 2),
    (NULL, NULL);

CREATE TABLE testsub2(x INT, y INT)
  AS SELECT * FROM VALUES
    (1, 1),
    (2, 2),
    (NULL, NULL);

CREATE TABLE testsub3(u INT, v INT)
  AS SELECT * FROM VALUES
    (1, 1),
    (2, 2),
    (NULL, NULL);
Copy

이러한 테이블은 다음 예제에서 사용됩니다.

지원되지 않는 하위 쿼리

오류를 반환하는 지원되지 않는 하위 쿼리를 실행합니다.

SELECT *
  FROM testsub1
  WHERE a IN(
    SELECT x FROM testsub2 LEFT JOIN testsub3 ON x+a = u
  );
Copy

상관 열 ``a``가 왼쪽 조인의 ON절이므로 이 쿼리는 오류를 반환합니다.

동작이 변경되기 전에는 다음 오류가 반환됩니다.

002031 (42601): SQL compilation error:
Unsupported subquery type cannot be evaluated

동작 변경 후 다음 오류가 반환됩니다.

002031 (42601): SQL compilation error:
Unsupported subquery type cannot be evaluated at line 4, position 4

지원되지 않는 하위 쿼리가 있는 보안 뷰

지원되지 않는 하위 쿼리로 보안 뷰를 만들고 뷰를 쿼리합니다.

CREATE SECURE VIEW svw
  AS SELECT *
    FROM testsub1
    WHERE a IN (
      SELECT x FROM testsub2 LEFT JOIN testsub3 ON x+a = u);

SELECT * FROM svw;
Copy

동작이 변경되기 전에는 다음 오류가 반환됩니다.

002031 (42601): SQL compilation error:
Unsupported subquery type cannot be evaluated

동작 변경 후 다음 오류가 반환됩니다.

002031 (42601): SQL compilation error:
Unsupported subquery type cannot be evaluated inside VIEW object: SVW

지원되지 않는 하위 쿼리가 있는 마스킹 정책

지원되지 않는 하위 쿼리로 마스킹 정책을 만들고, 마스킹 정책을 사용하도록 테이블을 변경하고, 테이블을 쿼리합니다.

CREATE MASKING POLICY mp AS
  (i INT) RETURNS INT -> IFF(i < (SELECT MAX(a) FROM svw), i, -1);

CREATE TABLE masked_testsub1(a INT, b INT)
  AS SELECT * FROM VALUES
    (1, 1),
    (2, 2),
    (NULL, NULL);

ALTER TABLE masked_testsub1
  ALTER COLUMN a SET MASKING POLICY mp;

SELECT * FROM masked_testsub1;
Copy

동작이 변경되기 전에는 다음 오류가 반환됩니다.

002031 (42601): SQL compilation error:
Unsupported subquery type cannot be evaluated

동작 변경 후 다음 오류가 반환됩니다.

002031 (42601): SQL compilation error:
Unsupported subquery type cannot be evaluated inside MASKING POLICY

참조: 2140