apache / apache/iotdb

Logical OR causes 305 INTERNAL SERVER ERROR

オープン
#16,408 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
Java
スター
6.4k
フォーク
1.2k
平均マージ
1日 23時間
マージ済み PR(30日)
115

説明

### Search before asking

- [x] I searched in the [issues](https://github.com/apache/iotdb/issues) and found nothing similar.

### Version

2.0.5 (build: 0917050)

### Describe the bug and provide the minimal reproduce step

DELETE DATABASE root.db1;
CREATE DATABASE root.db1;

CREATE TIMESERIES root.db1.t2.c1 INT64;
CREATE TIMESERIES root.db1.t2.c3 INT64;

INSERT INTO root.db1.t2(timestamp, c1, c3) VALUES (1707690567134, 1, 10);

#query 1
SELECT c1 AS ref0, c3 AS ref1
FROM root.db1.t2
WHERE (time == 1707690567134) AND (time NOT IN (1658432578669));

#query 2
SELECT c1 AS ref0, c3 AS ref1
FROM root.db1.t2
WHERE ((time == 1707690567134) AND (time NOT IN (1658432578669))) OR TRUE;

#query 3
SELECT c1 AS ref0, c3 AS ref1
FROM root.db1.t2
WHERE ((time == 1707690567134) AND (time NOT IN (1658432578669))) OR 1=1;

### What did you expect to see?

query 1 : return 1 value

query 2 : return same value

query 3 : return same value

### What did you see instead?

query 1 : return 1 value

query 2 : return same value

query 3 : 305 INTERNAL SERVER ERROR

Image

### Anything else?

OR 1=1 works in simple queries, but when combined with a time filter and time NOT IN (...), the query fails with 305 INTERNAL_SERVER_ERROR. The same predicate using OR TRUE runs fine.

### Are you willing to submit a PR?

- [ ] I'm willing to submit a PR!

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

まず、IoTDB 2.0.5 に対して 3 つの SQL クエリを実行し、動作する OR TRUE のケースと失敗する OR 1=1 のケースを比較します。NOT IN と組み合わせた時間フィルターについて、クエリ計画または式評価の経路を追跡します。クエリ 3 が 305 INTERNAL SERVER ERROR ではなく、クエリ 1 および 2 と同じ値を返せば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
java, sql
領域
databases
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
45/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。