分散テーブルでクエリをテストしているときに問題が発生しました。
SQL は次のようになります。
select distinct OriginCityName from on_time.ontime_all t where t."OriginStateName" = 'California'
「on_time.ontime_all」は、OriginCityName、OriginStateName などの列を持つ分散テーブルです。そしてエラー:
Received exception from server (version 1.1.54381):
Code: 171. DB::Exception: Received from localhost:9000, ::1. DB::Exception: Block structure mismatch in UNION stream: different number of columns:
OriginCityName String String(size = 0)
OriginCityName String String(size = 0), OriginStateName String String(size = 0).
0 rows in set. Elapsed: 0.186 sec.
ただし、SQL に対して次のいずれかを実行すると、エラーは消えます。
- 個別に削除
- where句を削除する
- where を prewhere に置き換えます
- where句の「OriginStateName」列を選択部分にも追加します
- 選択部分をに変更
select distinct *
この種の SQL は私のアプリケーションにとって重要です。それはバグですか、それとも ClickHouse の制限ですか? どうもありがとうございました。