데이터베이스 오브젝트에 대한 새로운 최대 크기 제한(보류 중)

주의

이 동작 변경은 2025_03 번들에 포함되어 있습니다.

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

참고

이 동작 변경은 원래 2025_02 번들에 도입되었지만, 2025_03 번들로 이동되었습니다. 이 동작 변경은 2025_03에서 기본적으로 비활성화되어 있습니다.

이 동작 변경 번들을 활성화하면 데이터베이스 오브젝트의 저장소가 다음과 같이 변경됩니다.

변경 전:

다음 유형의 열의 경우 허용되는 최대 길이는 16 MB 입니다.

  • VARCHAR

  • VARIANT

  • ARRAY

  • OBJECT

다음 유형의 열의 경우 허용되는 최대 길이는 8 MB 입니다.

  • BINARY

  • GEOGRAPHY

  • GEOMETRY

이 최대 허용 길이보다 큰 값을 저장하려고 시도하는 문은 실패합니다.

변경 후:

다음 유형의 열의 경우 허용되는 최대 길이는 128 MB 입니다.

  • VARCHAR

  • VARIANT

  • ARRAY

  • OBJECT

다음 유형의 열의 경우 허용되는 최대 길이는 64 MB 입니다.

  • BINARY

  • GEOGRAPHY

  • GEOMETRY

이 새로운 최대 허용 길이까지 값을 저장하려고 시도하는 문은 성공합니다. 이 최대 허용 길이보다 큰 값을 저장하려고 시도하는 문은 실패합니다.

기존 테이블과 변경 후 생성된 테이블 모두에서 VARIANT, ARRAY, OBJECT 유형의 열의 기본 길이는 128 MB 이며, GEOGRAPHY 및 GEOMETRY 유형의 열의 기본 길이는 64 MB 입니다.

그러나 VARCHAR 및 BINARY 유형의 열의 기본 길이는 각각 16 MB 및 8 MB 입니다. VARCHAR 유형의 열의 경우 새 테이블을 만들거나 기존 테이블을 변경할 때 명시적으로 지정하여 길이를 늘릴 수 있습니다. BINARY 유형의 열의 경우 새 테이블을 만들 때 명시적으로 지정하여 길이를 늘릴 수 있습니다. 기존 테이블에서 BINARY 열의 길이는 변경할 수 없습니다.

테이블에 새로운 제한이 있고 16 MB 를 초과하는 오브젝트를 저장하는 경우, 해당 테이블에서 CREATE TABLE AS SELECT (CTAS) 를 사용하여 생성된 모든 다운스트림 테이블은 실패합니다. 이 오류를 방지하려면 CTAS 문을 조정하고 해당 VARCHAR 열의 크기를 134217728(BINARY 의 경우 67108864)로 명시적으로 설정하십시오.

2025_03 번들을 활성화한 후 비활성화하면 테이블의 크기 제한이 더 큰 데이터베이스 오브젝트에 계속 액세스할 수 있습니다. 대규모 오브젝트 읽기 지원은 BCR-1779 를 통해 도입되었으며, 이미 모든 계정에 대해 활성화되어 있고 비활성화할 수 없습니다.

새로운 크기 제한에 대한 자세한 내용은 데이터베이스 오브젝트의 크기 제한 섹션을 참조하십시오.

16 MB 보다 큰 크기는 쿼리 결과에 표시됩니다

VARCHAR 의 경우 16 MB, BINARY 의 경우 8 MB 보다 큰 크기는 쿼리 결과에 표시됩니다. 예를 들어, SYSTEM$TYPEOF 함수를 호출하는 쿼리 또는 함수 및 프로시저에 대한 정보를 제공하는 뷰 쿼리(예: INFORMATION_SCHEMA FUNCTIONS 뷰)에서 크기를 볼 수 있습니다.

다음 예제는 크기가 16 MB 인 두 열을 연결합니다.

CREATE OR REPLACE TABLE test_larger_sizes(col1 VARCHAR, col2 VARCHAR) AS
  SELECT 'foo', 'bar';

SELECT SYSTEM$TYPEOF(CONCAT(col1, col2)) FROM test_larger_sizes;
Copy
+-----------------------------------+
| SYSTEM$TYPEOF(CONCAT(COL1, COL2)) |
|-----------------------------------|
| VARCHAR(33554432)[LOB]            |
+-----------------------------------+

함수 및 프로시저의 경우 새로운 크기는 INFORMATION_SCHEMA FUNCTIONS 뷰에 표시됩니다.

CREATE OR REPLACE FUNCTION test_larger_sized_func(in_arg VARCHAR)
  RETURNS VARCHAR
  LANGUAGE JAVASCRIPT
  CALLED ON NULL INPUT AS
$$
  RETURN NULL;
$$
;

SELECT data_type FROM INFORMATION_SCHEMA.FUNCTIONS
  WHERE function_name = 'TEST_LARGER_SIZED_FUNC';
Copy
+--------------------+
| DATA_TYPE          |
|--------------------|
| VARCHAR(134217728) |
+--------------------+

16 MB 보다 큰 크기의 오류 메시지 변경 사항

일부 쿼리의 경우 오류 메시지가 변경될 수 있습니다.

다음은 오류를 반환하는 VARCHAR 열에 대한 삽입의 예입니다.

CREATE OR REPLACE TABLE test_larger_size_error(col VARCHAR);
INSERT INTO test_larger_size_error SELECT RANDSTR(20000000, 1);
Copy

변경하기 전에 다음과 같은 오류 메시지가 반환됩니다.

100082 (22000): Max LOB size (16777216) exceeded, actual size of parsed column is 20000000

변경 후 다음과 같은 오류 메시지가 반환됩니다.

100078 (22000): String
'CaFHJdoX3upWliCCdAPXXgytQuXzQpFO4laQEFdmiE1NDOywjwHoBqSNTCzTW66ynuR7EsI4ZxStCh3VMIBMYeHWgv1gUZRmHEK4kGmZcC02jGQhnnFJ0jtcIEWBIN6vKGkvSwG482IvfgVVwF3FTj7sb86t1SK9qigI6ujlSNByytIYBk0lkI1MM0zpRFeH2BNvGxtI.'
is too long and would be truncated

지원되는 드라이버

더 큰 데이터베이스 오브젝트를 지원하는 드라이버 버전으로 업데이트해야 할 수도 있습니다. 그렇지 않으면 다음과 유사한 오류가 반환될 수 있습니다.

100067 (54000): The data length in result column <column_name> is not supported by this version of the client.
Actual length <actual_size> exceeds supported length of 16777216.

지원되는 드라이버에 대한 자세한 내용은 결과 세트에서 큰 오브젝트를 지원하는 드라이버 버전 섹션을 참조하십시오.

Iceberg 지원

관리되지 않는 Iceberg 테이블의 경우 VARCHAR 및 BINARY 열의 기본 길이는 128 MB 입니다. 이 제한은 새로 만들거나 새로 고친 테이블에 적용됩니다. 새 크기 제한이 활성화되기 전에 생성되고 새로 고치지 않은 테이블에는 여전히 이전 크기 제한이 적용됩니다. 기존 테이블을 새로고침하여 크기 제한을 늘립니다.

관리되는 Iceberg 테이블의 경우 VARCHAR 및 BINARY 열의 기본 길이는 128 MB 입니다. 새 크기 제한이 활성화되기 전에 만든 테이블에는 여전히 이전 크기 제한이 적용됩니다.

이러한 테이블에서 VARCHAR 유형의 열에 새 크기를 적용하려면 테이블을 다시 만들거나 열을 변경합니다. 다음 예는 새로운 크기 제한을 사용하도록 열을 변경하는 예제입니다.

ALTER ICEBERG TABLE my_iceberg_table
  ALTER COLUMN col1 SET DATA TYPE VARCHAR(134217728);
Copy

이러한 테이블에서 BINARY 유형의 열에 새 크기를 적용하려면 테이블을 다시 생성합니다. 기존 테이블에서 BINARY 열의 길이는 변경할 수 없습니다.

Ref: 1942