Sender has no dateColumn() setter for DATE columns
まだ誰も着手していません。
評価
調査の方向性
確立された setter の規約に従うため、まず Sender の既存の byteColumn、charColumn、timestampColumn、ipv4Column、at、atNow の実装を確認します。ミリ秒と提案されている Instant オーバーロードを使用した DATE サポートを追加し、1 ミリ秒未満の値に対する想定される動作を確認し、Java の ingestion で null の動作を維持したまま DATE 値を書き込めることを検証します。
索引モデルが issue の本文から書いたものです。
説明
Summary
Sender has no dateColumn() setter, so a Java producer cannot write a DATE column — even though the server accepts DATE on QWP ingress and this client reads it back fine on egress.
Current status: documented as a limitation
The client documentation already concedes it — documentation/connect/clients/java.md:532:
DATE is accepted on ingress server-side but the Java client does not yet expose a
dateColumn()setter. All types are readable on the egress side.
Cross-client parity
DATE is the only type missing from Java's row-oriented ingestion API, and Java is the only QWP client missing DATE:
| Type | Rust Buffer |
C/C++ line_sender_buffer |
.NET | Java Sender |
Go QwpSender |
Python row() |
|---|---|---|---|---|---|---|
UUID |
✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
GEOHASH |
✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
LONG256 |
✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
CHAR |
✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
IPv4 |
✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
BINARY |
✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
DATE |
✅ | ✅ | ✅ | ❌ | ✅ | ❌ |
Sibling implementations, all taking milliseconds since epoch:
- Rust —
column_date(name, millis: i64)andcolumn_date_opt(questdb-rs/src/ingress/buffer.rs:1393,:1418) - C —
line_sender_buffer_column_date(include/questdb/ingress/line_sender.h:1086) - Go —
DateColumn(name string, val time.Time) QwpSender(qwp_sender.go:61) - .NET —
ColumnDate(name, long millisSinceEpoch)
Suggested shape
Matching the existing setter conventions on Sender (byteColumn, charColumn, timestampColumn, ipv4Column, …):
Sender dateColumn(CharSequence name, long millisSinceEpoch);
Sender dateColumn(CharSequence name, Instant value);
The long overload mirrors the other clients' wire-level form; the Instant overload matches how timestampColumn(name, Instant) already reads at the call site. As with every other column, a null is written by omitting the setter before at() / atNow().
Worth confirming the intended truncation behaviour for the Instant overload, since DATE is millisecond-resolution and Instant is not — silently truncating sub-millisecond precision versus rejecting it is a deliberate choice, and the other clients sidestep it by only accepting millis (except Go, which takes a time.Time).
- 主要言語
- Java
- スター
- 10
- フォーク
- 6
- 平均マージ
- 8日 1時間
- マージ済み PR(30日)
- 3
環境構築
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
questdb/java-questdb-client のほかの issue
-
bug QWP
難易度 4/5 3〜5日 初心者へのやさしさ 42/100
questdb/java-questdb-client#100 ·
-
bug
難易度 3/5 1〜2日 初心者へのやさしさ 68/100
-
bug
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
-
bug
難易度 3/5 1〜2日 初心者へのやさしさ 58/100
questdb/java-questdb-client#18 · コメント 1 件 ·
questdb/java-questdb-client の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
OpenAPITools/openapi-generator#25014 ·
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 92/100
AloisSeckar/demos-java#380 ·
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
openhab/openhab-core#5847 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
appsmithorg/appsmith#42297 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100