apache / apache/iotdb

Do we need reject inserting an invalid infinity float value while in select into & fill

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

説明

**Describe the bug**
Like [IOTDB-2732](https://issues.apache.org/jira/browse/IOTDB-2732), I try to insert a infinity value into a float timeseries, not inserting directly but using `select into` and `fill` clause to insert a constant. And then, the iotdb doesn't reject it but remain Infinity in the database. Should it be checked and rejected like IOTDB-2732?
I also check the fill of int32 which can correctly reject it when insert into database by returning `Value fill doesn't support the 0-th column in SQL` in the IoTDB server(but return `The statement is executed successfully`in client), so I think the problem is the fill clause in float only parse the result but not check it.
Thanks.

**To Reproduce**
Run the following statements in iotdb-client:
`create timeseries root.sg0.t0 with datatype=float, encoding=plain`
`create timeseries root.sg0.t1 with datatype=float, encoding=plain`
`select t0 into t1 from root.sg0 where time=1 fill(3.5e38)`
`select * from root.sg0`

**Expected behavior**
The system will reject the select into statement, and there won't be Infinity in the database.

**Screenshots**
![image](https://user-images.githubusercontent.com/25195216/185772549-292af9c1-d2f8-45e7-b087-329d20b08f5c.png)

**Desktop (please complete the following information):**
- OS: Windows 10
- IoTDB version 0.13.1

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

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

調査の方向性

まず、提供された iotdb-client ステートメントで問題を再現し、select into と fill の処理パスを調べます。float の埋め込み値がどのように解析および検証されるかを追跡します。完了の条件は、ステートメントが拒否され、データベースに Infinity 値が存在しないことです。

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

評価

技術スタック
java, sql
領域
database
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
停滞
明瞭さ
明確に書かれている
初心者へのやさしさ
45/100

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

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