본문으로 바로가기
본문으로 바로가기

2017 변경 내역

ClickHouse 릴리스 1.1.54327, 2017-12-21

이 릴리스에는 이전 릴리스 1.1.54318에 대한 버그 수정이 포함되어 있습니다.

  • 데이터 손실을 초래할 수 있는 복제(replication)에서의 경쟁 조건(race condition)과 관련된 버그를 수정했습니다. 이 문제는 버전 1.1.54310 및 1.1.54318에 영향을 줍니다. 이 중 하나의 버전에서 복제된 테이블(Replicated tables)을 사용하는 경우 업데이트를 강력히 권장합니다. 이 문제는 로그에 Part ... from own log does not exist.와 같은 경고(Warning) 메시지로 나타납니다. 이러한 메시지가 로그에 보이지 않더라도 이 문제는 여전히 영향을 줄 수 있습니다.

ClickHouse Release 1.1.54318, 2017-11-30

이 릴리스에는 이전 릴리스 1.1.54310의 버그 수정 사항이 포함합니다:

  • SummingMergeTree 엔진에서 머지 작업 중 잘못된 행이 삭제되던 문제를 수정했습니다.
  • 복제되지 않은 MergeTree 엔진에서 메모리 누수 문제를 수정했습니다.
  • MergeTree 엔진에서 잦은 INSERT 시 성능 저하가 발생하던 문제를 수정했습니다.
  • 복제 큐가 실행을 중지하던 문제를 수정했습니다.
  • 서버 로그의 로테이션 및 보관 기능을 수정했습니다.

ClickHouse 릴리스 1.1.54310, 2017-11-01

새로운 기능:

  • MergeTree 계열 테이블 엔진에서 사용자 정의 파티셔닝 키를 지원합니다.
  • Kafka 테이블 엔진이 추가되었습니다.
  • CatBoost 모델을 로드하고 ClickHouse에 저장된 데이터에 적용하는 기능이 추가되었습니다.
  • UTC로부터의 오프셋이 정수가 아닌 타임존을 지원합니다.
  • 시간 간격에 대한 산술 연산을 지원합니다.
  • Date 및 DateTime 타입의 값 범위가 2105년까지 확장되었습니다.
  • CREATE MATERIALIZED VIEW x TO y 쿼리가 추가되었습니다(materialized view의 데이터를 저장할 기존 테이블을 지정합니다).
  • 인수를 사용하지 않는 ATTACH TABLE 쿼리가 추가되었습니다.
  • SummingMergeTree 테이블에서 이름이 -Map으로 끝나는 Nested 컬럼에 대한 처리 로직이 sumMap 집계 함수로 분리되었습니다. 이제 이러한 컬럼을 명시적으로 지정할 수 있습니다.
  • IP trie 딕셔너리의 최대 크기가 1억 2,800만(128M) 엔트리로 증가했습니다.
  • getSizeOfEnumType 함수가 추가되었습니다.
  • sumWithOverflow 집계 함수가 추가되었습니다.
  • Cap'n Proto 입력 포맷을 지원합니다.
  • zstd 알고리즘을 사용할 때 압축 수준을 사용자 정의할 수 있습니다.

하위 호환성이 깨지는 변경 사항(Backward Incompatible Changes):

  • Memory 이외의 엔진을 사용하는 임시 테이블은 생성할 수 없습니다.
  • View 또는 MaterializedView 엔진을 사용하는 테이블을 명시적으로 생성할 수 없습니다.
  • 테이블 생성 시 샘플링 키(sampling key) 표현식이 기본 키(primary key)에 포함되는지 확인하는 새로운 검사가 수행됩니다.

버그 수정:

  • 분산 테이블(Distributed table)에 동기식으로 삽입할 때 발생하던 멈춤 현상을 수정했습니다.
  • 복제된 테이블(Replicated Table)에서 파트를 원자적이지 않게 추가·삭제하던 문제를 수정했습니다.
  • materialized view에 삽입된 데이터에 불필요한 중복 제거가 적용되지 않도록 수정했습니다.
  • 로컬 레플리카가 지연되고 원격 레플리카를 사용할 수 없는 분산 테이블에 쿼리를 실행하더라도 더 이상 오류가 발생하지 않습니다.
  • 임시 테이블을 생성할 때 default 데이터베이스에 대한 권한이 더 이상 필요하지 않습니다.
  • 인자를 지정하지 않은 Array 타입을 사용할 때 발생하던 충돌 문제를 수정했습니다.
  • 서버 로그가 저장된 디스크 볼륨의 용량이 가득 찼을 때 발생하던 멈춤 현상을 수정했습니다.
  • Unix epoch의 첫 번째 주에 대해 toRelativeWeekNum 함수에서 오버플로우가 발생하던 문제를 수정했습니다.

빌드 개선:

  • 여러 서드파티 라이브러리(대표적으로 Poco)가 업데이트되어 Git 서브모듈로 전환되었습니다.

ClickHouse 릴리스 1.1.54304, 2017-10-19

새로운 기능:

  • 네이티브 프로토콜에서 TLS를 지원합니다 (config.xml에서 tcp_ssl_port를 설정하여 활성화합니다).

버그 수정:

  • 복제된 테이블에 대한 ALTER가 이제 가능한 한 빨리 실행을 시작하도록 시도합니다.
  • preferred_block_size_bytes=0 설정으로 데이터를 읽을 때 발생하던 크래시를 수정했습니다.
  • Page Down을 눌렀을 때 clickhouse-client가 크래시 나던 문제를 수정했습니다.
  • GLOBAL INUNION ALL이 포함된 일부 복잡한 쿼리가 올바르게 해석되도록 수정했습니다.
  • FREEZE PARTITION이 이제 항상 원자적으로 동작합니다.
  • 빈 POST 요청은 이제 HTTP 상태 코드 411 응답을 반환합니다.
  • CAST(1 AS Nullable(UInt8))와 같은 표현식의 해석 오류를 수정했습니다.
  • MergeTree 테이블에서 Array(Nullable(String)) 컬럼을 읽을 때 발생하던 오류를 수정했습니다.
  • SELECT dummy AS dummy, dummy AS b와 같은 쿼리를 파싱할 때 발생하던 크래시를 수정했습니다.
  • 잘못된 users.xml이 있어도 사용자가 올바르게 업데이트되도록 수정했습니다.
  • 실행형 딕셔너리가 0이 아닌 응답 코드를 반환하는 경우를 올바르게 처리하도록 수정했습니다.

ClickHouse 릴리스 1.1.54292, 2017-09-20

새로운 기능:

  • 좌표 평면에서 좌표를 다루기 위한 pointInPolygon 함수를 추가했습니다.
  • SummingMergeTree와 유사하게 배열의 합을 계산하는 sumMap 집계 함수를 추가했습니다.
  • trunc 함수를 추가했습니다. 반올림 함수들(round, floor, ceil, roundToExp2)의 성능을 개선하고 동작 로직을 수정했습니다. 분수와 음수에 대해 roundToExp2 함수의 동작 로직을 변경했습니다.
  • ClickHouse 실행 파일이 이제 libc 버전에 덜 의존합니다. 동일한 ClickHouse 실행 파일을 아주 다양한 Linux 시스템에서 실행할 수 있습니다. 컴파일된 쿼리(기본적으로 사용되지 않는 compile = 1 설정 사용 시)를 사용할 때는 여전히 의존성이 남아 있습니다.
  • 쿼리의 동적 컴파일에 필요한 시간을 줄였습니다.

버그 수정:

  • part ... intersects previous part 메시지를 발생시키고 레플리카 일관성을 약화시킬 수 있던 오류를 수정했습니다.
  • 서버 종료 중 ZooKeeper를 사용할 수 없을 때 서버가 멈추는 오류를 수정했습니다.
  • 레플리카를 복원할 때 과도하게 기록되던 로그를 제거했습니다.
  • UNION ALL 구현의 오류를 수정했습니다.
  • 블록의 첫 번째 컬럼이 Array 타입인 경우 발생하던 concat 함수의 오류를 수정했습니다.
  • 이제 system.merges 테이블에서 진행 상태가 올바르게 표시됩니다.

ClickHouse 릴리스 1.1.54289, 2017-09-13

새로운 기능:

  • 서버 관리용 SYSTEM 쿼리: SYSTEM RELOAD DICTIONARY, SYSTEM RELOAD DICTIONARIES, SYSTEM DROP DNS CACHE, SYSTEM SHUTDOWN, SYSTEM KILL.
  • 배열을 다루기 위한 함수 추가: concat, arraySlice, arrayPushBack, arrayPushFront, arrayPopBack, arrayPopFront.
  • ZooKeeper 설정에 rootidentity 매개변수를 추가했습니다. 이를 통해 동일한 ZooKeeper 클러스터에서 개별 사용자를 격리할 수 있습니다.
  • 집계 함수 groupBitAnd, groupBitOr, groupBitXor를 추가했습니다(호환성을 위해 BIT_AND, BIT_OR, BIT_XOR 이름으로도 사용할 수 있습니다).
  • 파일 시스템에서 소켓을 지정하여 MySQL에서 외부 딕셔너리를 로드할 수 있습니다.
  • SSL(ssl_cert, ssl_key, ssl_ca 매개변수)을 통해 MySQL에서 외부 딕셔너리를 로드할 수 있습니다.
  • 사용자별 쿼리의 전체 대역폭 사용량을 제한하기 위한 max_network_bandwidth_for_user 설정을 추가했습니다.
  • 임시 테이블에 대한 DROP TABLE을 지원합니다.
  • CSVJSONEachRow 포맷에서 Unix 타임스탬프 형식의 DateTime 값을 읽는 기능을 지원합니다.
  • 분산 쿼리에서 지연 레플리카는 이제 기본적으로 제외됩니다(기본 임계값은 5분입니다).
  • ALTER 수행 시 FIFO 잠금 방식을 사용합니다. 이를 통해 ALTER 쿼리가 지속적으로 실행 중인 쿼리 때문에 무기한 차단되지 않습니다.
  • 설정 파일에서 umask를 지정하는 옵션을 추가했습니다.
  • DISTINCT가 포함된 쿼리의 성능을 개선했습니다.

버그 수정:

  • ZooKeeper에서 오래된 노드를 삭제하는 프로세스를 개선했습니다. 이전에는 삽입이 매우 빈번할 때 오래된 노드가 삭제되지 않는 경우가 있었고, 그 결과 서버 종료가 느려지는 등의 문제가 발생했습니다.
  • ZooKeeper에 대한 연결을 위해 호스트를 선택하는 무작위 선택 로직을 수정했습니다.
  • 레플리카가 localhost인 경우 분산 쿼리에서 지연된 레플리카를 제외하는 동작을 수정했습니다.
  • Nested 구조의 요소에 대해 ALTER MODIFY를 실행한 후 ReplicatedMergeTree 테이블의 데이터 파트가 손상될 수 있는 오류를 수정했습니다.
  • SELECT 쿼리가 「멈춰 있는」 것처럼 보일 수 있는 오류를 수정했습니다.
  • 분산 DDL 쿼리를 개선했습니다.
  • CREATE TABLE ... AS <materialized view> 쿼리를 수정했습니다.
  • Buffer 테이블에 대한 ALTER ... CLEAR COLUMN IN PARTITION 쿼리에서 발생하던 교착 상태를 해결했습니다.
  • JSONEachRowTSKV 포맷을 사용할 때 Enum의 기본값이 최소값이 아닌 0으로 설정되던 잘못된 동작을 수정했습니다.
  • executable 소스를 사용하는 딕셔너리 사용 시 좀비 프로세스가 나타나던 문제를 해결했습니다.
  • HEAD 쿼리에서 발생하던 세그멘테이션 폴트(segfault)를 수정했습니다.

ClickHouse 개발 및 빌드를 위한 개선된 워크플로우:

  • pbuilder를 사용하여 ClickHouse를 빌드할 수 있습니다.
  • Linux에서 빌드를 수행할 때 libstdc++ 대신 libc++를 사용할 수 있습니다.
  • 정적 코드 분석 도구인 Coverage, clang-tidy, cppcheck를 사용하는 방법에 대한 지침이 추가되었습니다.

업그레이드 시 유의 사항:

  • MergeTree 설정 max_bytes_to_merge_at_max_space_in_pool(병합할 데이터 파트의 총 최대 크기, 바이트 단위)의 기본값이 상향되었습니다. 값은 100 GiB에서 150 GiB로 증가했습니다. 이로 인해 서버 업그레이드 이후 대규모 병합이 실행될 수 있으며, 디스크 서브시스템에 대한 부하가 증가할 수 있습니다. 서버에서 사용 가능한 여유 공간이 현재 실행 중인 병합들의 총 크기의 두 배보다 적은 경우, 작은 데이터 파트의 병합을 포함한 다른 모든 병합이 중지됩니다. 그 결과 INSERT 쿼리는 "Merges are processing significantly slower than inserts."라는 메시지와 함께 실패합니다. 상황을 모니터링하려면 SELECT * FROM system.merges 쿼리를 사용하십시오. 또한 system.metrics 테이블 또는 Graphite에서 DiskSpaceReservedForMerge 메트릭을 확인할 수 있습니다. 이 문제는 대규모 병합이 완료되면 자동으로 해결되므로, 별도의 조치를 취할 필요는 없습니다. 이러한 동작이 원치 않는 경우 max_bytes_to_merge_at_max_space_in_pool 설정 값을 이전 값으로 복원할 수 있습니다. 이를 위해 config.xml의 <merge_tree> 섹션으로 이동하여 <merge_tree>``<max_bytes_to_merge_at_max_space_in_pool>107374182400</max_bytes_to_merge_at_max_space_in_pool> 으로 설정한 후 서버를 재시작하십시오.

ClickHouse 릴리스 1.1.54284, 2017-08-29

  • 이전 1.1.54282 릴리스에 대한 버그 수정 릴리스입니다. ZooKeeper의 파트 디렉터리에서 발생하던 누수를 수정합니다.

ClickHouse 릴리스 1.1.54282, 2017-08-23

이 릴리스에는 이전 릴리스 1.1.54276에 대한 버그 수정이 포함됩니다:

  • 분산 테이블에 데이터를 삽입할 때 발생하던 DB::Exception: Assertion violation: !_path.empty() 오류를 수정했습니다.
  • 입력 데이터가 ';'로 시작하는 경우 RowBinary 형식으로 데이터를 삽입할 때 발생하던 파싱 문제를 수정했습니다.
  • 특정 집계 함수(예: groupArray())의 런타임 컴파일 중 발생하던 오류를 수정했습니다.

ClickHouse 릴리스 1.1.54276, 2017-08-16

새로운 기능:

  • SELECT 쿼리에 선택적인 WITH 절이 추가되었습니다. 예시 쿼리: WITH 1+1 AS a SELECT a, a*a
  • 분산 테이블(Distributed table)에서 INSERT를 동기적으로 수행할 수 있습니다. 모든 세그먼트에 데이터가 저장된 이후에만 OK가 반환됩니다. 이는 설정 insert_distributed_sync=1로 활성화됩니다.
  • 16바이트 식별자를 처리하기 위한 UUID 데이터 타입이 추가되었습니다.
  • Tableau와의 호환성을 위해 CHAR, FLOAT 및 기타 타입에 대한 별칭이 추가되었습니다.
  • 시간을 숫자로 변환하기 위한 toYYYYMM, toYYYYMMDD, toYYYYMMDDhhmmss 함수가 추가되었습니다.
  • 클러스터 DDL 쿼리에서 서버를 식별하기 위해 IP 주소(호스트명과 함께)를 사용할 수 있습니다.
  • substring(str, pos, len) 함수에서 비상수 인자와 음수 오프셋에 대한 지원이 추가되었습니다.
  • groupArray(max_size)(column) 집계 함수에 max_size 매개변수가 추가되었고, 성능이 최적화되었습니다.

주요 변경 사항:

  • 보안 향상: 모든 서버 파일이 0640 권한으로 생성되며, <umask> 구성 매개변수를 통해 변경할 수 있습니다.
  • 구문이 잘못된 쿼리에 대한 오류 메시지가 개선되었습니다.
  • 대용량 MergeTree 데이터 섹션을 병합할 때 메모리 사용량이 크게 감소하고 성능이 향상되었습니다.
  • ReplacingMergeTree 엔진에서 데이터 병합 성능이 크게 향상되었습니다.
  • 여러 소스의 INSERT를 묶어서 분산 테이블(Distributed table)에서 비동기 INSERT 성능이 향상되었습니다. 이 기능을 활성화하려면 distributed_directory_monitor_batch_inserts=1 설정 값을 사용하십시오.

하위 호환성을 깨는 변경 사항:

  • 배열용 groupArray(array_column) 함수의 집계 상태 이진 포맷이 변경되었습니다.

변경 사항 전체 목록:

  • JSON 형식에서 nan 및 inf 값을 출력할 수 있도록 output_format_json_quote_denormals 설정을 추가했습니다.
  • 분산 테이블(Distributed table)에서 읽을 때 스트림 할당을 최적화했습니다.
  • 값이 변경되지 않는 한 읽기 전용 모드에서도 설정을 구성할 수 있습니다.
  • preferred_block_size_bytes 설정에 지정된 블록 크기 제한을 충족하기 위해 MergeTree 엔진의 정수가 아닌 그래뉼을 가져올 수 있는 기능을 추가했습니다. 목적은 큰 컬럼을 가진 테이블에서 쿼리를 처리할 때 RAM 사용량을 줄이고 캐시 지역성을 향상하는 것입니다.
  • toStartOfHour(x) op сonstexpr와 같은 조건에 대해 toStartOfHour(x)와 같은 표현식을 포함하는 인덱스를 효율적으로 사용할 수 있게 했습니다.
  • MergeTree 엔진용 새 설정을 추가했습니다(config.xmlmerge_tree 섹션):
    • replicated_deduplication_window_seconds는 복제된 테이블(Replicated Table)에서 INSERT 중복 제거를 허용하는 시간을 초 단위로 설정합니다.
    • cleanup_delay_period는 오래된 데이터를 제거하기 위한 정리 작업을 얼마나 자주 시작할지 설정합니다.
    • replicated_can_become_leader는 레플리카가 리더(머지 할당 수행 포함)가 되는 것을 방지할 수 있습니다.
  • ZooKeeper에서 오래된 데이터를 제거하는 정리 작업을 가속화했습니다.
  • 클러스터형 DDL 쿼리에 대한 여러 개선 및 수정이 이루어졌습니다. 특히 새로운 distributed_ddl_task_timeout 설정은 클러스터 내 서버의 응답을 기다리는 시간을 제한합니다. 모든 호스트에서 DDL 요청이 수행되지 않은 경우 응답에는 타임아웃 오류가 포함되며, 요청은 비동기 모드로 실행됩니다.
  • 서버 로그에서 스택 트레이스 표시를 개선했습니다.
  • 압축 방식에 대해 "none" 값을 추가했습니다.
  • config.xml에서 여러 dictionaries_config 섹션을 사용할 수 있습니다.
  • 파일 시스템의 소켓을 통해 MySQL에 연결할 수 있습니다.
  • system.parts 테이블에 마크 크기(바이트 단위)에 대한 정보를 포함하는 새 컬럼이 추가되었습니다.

버그 수정:

  • Merge 테이블을 사용하는 분산 테이블에서 _table 필드에 조건이 있는 SELECT 쿼리가 이제 올바르게 동작합니다.
  • ReplicatedMergeTree에서 데이터 파트를 검사할 때 발생하던 드문 레이스 컨디션을 수정했습니다.
  • 서버 시작 시 "leader election" 과정에서 발생할 수 있던 멈춤 현상을 수정했습니다.
  • 데이터 소스의 로컬 레플리카를 사용할 때 max_replica_delay_for_distributed_queries 설정이 무시되던 문제를 수정했습니다.
  • 존재하지 않는 컬럼을 정리하려 할 때 ALTER TABLE CLEAR COLUMN IN PARTITION의 동작이 올바르지 않던 문제를 수정했습니다.
  • 빈 배열 또는 문자열을 사용할 때 multiIf 함수에서 발생하던 예외를 수정했습니다.
  • Native 포맷을 역직렬화할 때 과도한 메모리 할당이 발생하던 문제를 수정했습니다.
  • Trie 딕셔너리의 자동 업데이트가 올바르지 않던 문제를 수정했습니다.
  • Merge 테이블에서 SAMPLE을 사용할 때 GROUP BY 절이 포함된 쿼리를 실행하면 발생하던 예외를 수정했습니다.
  • distributed_aggregation_memory_efficient=1 사용 시 GROUP BY에서 크래시가 발생하던 문제를 수정했습니다.
  • 이제 IN과 JOIN의 오른쪽에 database.table을 지정할 수 있습니다.
  • 병렬 집계를 위해 너무 많은 스레드가 사용되던 문제를 수정했습니다.
  • FixedString 인자를 사용할 때 "if" 함수의 동작을 수정했습니다.
  • 가중치가 0인 세그먼트에 대해 분산 테이블에서 SELECT가 잘못 동작하던 문제를 수정했습니다.
  • CREATE VIEW IF EXISTS를 실행해도 더 이상 크래시가 발생하지 않습니다.
  • input_format_skip_unknown_fields=1로 설정되어 있고 음수가 존재할 때 잘못된 동작을 하던 문제를 수정했습니다.
  • 딕셔너리에 잘못된 데이터가 있을 경우 dictGetHierarchy() 함수에서 무한 루프가 발생하던 문제를 수정했습니다.
  • IN 또는 JOIN 절과 Merge 테이블에서 서브쿼리가 포함된 분산 쿼리를 실행할 때 발생하던 Syntax error: unexpected (...) 오류를 수정했습니다.
  • 딕셔너리 테이블에 대한 SELECT 쿼리를 잘못 해석하던 문제를 수정했습니다.
  • IN 및 JOIN 절에서 20억 개를 초과하는 요소를 가진 배열을 사용할 때 발생하던 "Cannot mremap" 오류를 수정했습니다.
  • MySQL을 소스로 사용하는 딕셔너리의 장애 조치(failover)를 수정했습니다.

ClickHouse 개발 및 빌드를 위한 개선된 워크플로:

  • Arcadia에서 빌드를 수행할 수 있습니다.
  • gcc 7을 사용하여 ClickHouse를 컴파일할 수 있습니다.
  • ccache+distcc를 사용한 병렬 빌드가 이제 더 빨라졌습니다.

ClickHouse 릴리스 1.1.54245, 2017년 7월 4일

새로운 기능:

  • 분산 DDL(예: CREATE TABLE ON CLUSTER)
  • 복제된 테이블(Replicated Table)에 대한 ALTER TABLE CLEAR COLUMN IN PARTITION 쿼리
  • 딕셔너리 테이블용 엔진(테이블 형태로 딕셔너리 데이터에 접근하기 위한 엔진).
  • 딕셔너리 데이터베이스 엔진(이 유형의 데이터베이스는 연결된 모든 외부 딕셔너리에 대해 자동으로 딕셔너리 테이블을 사용할 수 있습니다).
  • 소스에 요청을 보내어 딕셔너리의 업데이트 여부를 확인할 수 있습니다.
  • 정규화된 컬럼 이름 지원
  • 식별자를 큰따옴표로 감싸서 인용할 수 있습니다.
  • HTTP 인터페이스에서의 세션 지원.
  • 복제된 테이블(Replicated Table)에 대한 OPTIMIZE 쿼리는 리더에서만이 아니라 다른 노드에서도 실행할 수 있습니다.

하위 호환성을 깨는 변경:

  • SET GLOBAL이 제거되었습니다.

사소한 변경 사항:

  • 이제 알림이 발생한 후 로그에 전체 스택 트레이스를 기록합니다.
  • 시작 시 손상되었거나 초과된 데이터 파트 수에 대한 검증을 완화했습니다(거짓 양성이 너무 많았습니다).

버그 수정:

  • 분산 테이블에 데이터를 INSERT할 때 잘못된 연결이 그대로 유지되는 문제를 수정했습니다.
  • 이제 GLOBAL IN이 분산 테이블을 참조하는 Merge 테이블의 쿼리에서도 동작합니다.
  • Google Compute Engine 가상 머신에서 잘못된 코어 수가 감지되던 문제가 수정되었습니다.
  • 캐시된 외부 딕셔너리의 executable 소스 동작 방식이 변경되었습니다.
  • 널 문자를 포함하는 문자열 비교를 수정했습니다.
  • Float32 기본 키 필드를 상수와 비교하는 동작을 수정했습니다.
  • 이전에는 필드 크기를 잘못 추정하여 지나치게 큰 메모리 할당으로 이어질 수 있었습니다.
  • ALTER를 사용해 테이블에 추가된 널 허용 컬럼을 쿼리할 때 발생하던 크래시를 수정했습니다.
  • 행 수가 LIMIT보다 작은 경우 널 허용 컬럼으로 정렬할 때 발생하던 크래시를 수정했습니다.
  • 상수 값만으로 구성된 ORDER BY 서브쿼리를 수정했습니다.
  • 이전에는 DROP TABLE이 실패한 후 복제된 테이블(Replicated Table)이 잘못된 상태로 남아 있을 수 있었습니다.
  • 결과가 비어 있는 스칼라 서브쿼리에 대한 별칭이 더 이상 손실되지 않습니다.
  • 이제 컴파일을 사용하는 쿼리는 .so 파일이 손상되더라도 오류로 인해 실패하지 않습니다.