Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Sender has no dateColumn() setter for DATE columns

Ouverte
#83 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 3 jours

@dhruv-creates69 y travaille déjà.

Depuis le 29/9/2026.

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
72/100
Type d'issue
Fonctionnalité
Clarté
Plutôt claire
Activité
Calme
Stack technique
java
Domaine
api

Piste de recherche

Commencez par les implémentations existantes de byteColumn, charColumn, timestampColumn, ipv4Column, at et atNow de Sender afin de suivre les conventions de setter établies. Ajoutez la prise en charge de DATE en utilisant des millisecondes et la surcharge Instant proposée, confirmez le comportement prévu pour les valeurs inférieures à la milliseconde et vérifiez que l’ingestion Java peut écrire des valeurs DATE tout en préservant le comportement des valeurs nulles.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

enhancement

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) and column_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).

Langage dominant
Java
Étoiles
10
Forks
6
Merge moyen
2 j 19 h
PR mergées (30 j)
4

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de questdb/java-questdb-client

Toutes les issues de questdb/java-questdb-client

Issues similaires

Plus d'issues Java

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.