Java SDK: `describeTable()` не возвращает JSON-индексы
Maintainer thường phản hồi trong vòng 1 ngày
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 35/100
Hướng nghiên cứu
Start in table/src/main/java/tech/ydb/table/impl/BaseSession.java at mapDescribeTable(), which handles only the global, async and unique index kinds, and in table/src/main/java/tech/ydb/table/description/TableIndex.java, whose Type enum has no JSON entry. The protobuf dependency version is set in bom/pom.xml (ydb-proto-api 1.9.6), and the C++ SDK's kGlobalJsonIndex mapping is a reference for the expected shape. Done means a test with a GLOBAL USING json index returns it from getIndexes() with a JSON type and the payload column. The protobuf bump and the design of the new type should be agreed with maintainers first.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Проблема
Если у таблицы YDB есть индекс GLOBAL USING json, вызов Session.describeTable() возвращает TableDescription, в котором этот индекс отсутствует в getIndexes(). Обычные вторичные индексы той же таблицы отображаются.
Из-за этого по результату describeTable() нельзя получить полное описание индексов таблицы или даже определить, что JSON-индекс существует.
Как воспроизвести
-
Создать таблицу с JSON-индексом, например:
CREATE TABLE documents ( id Uint64 NOT NULL, payload JsonDocument NOT NULL, INDEX json_idx GLOBAL USING json ON (payload), PRIMARY KEY (id) ); -
В Java SDK вызвать
session.describeTable(path)и проверитьresult.getValue().getIndexes().
Фактически: json_idx отсутствует в списке индексов. Метод не сообщает об ошибке.
Ожидается: json_idx присутствует в описании таблицы с типом JSON-индекса и индексируемой колонкой payload.
Что видно в исходниках
BaseSession.mapDescribeTable() добавляет в TableDescription только global_index, global_async_index и global_unique_index. В TableIndex.Type отдельного типа для JSON-индекса также нет. Используемый ydb-proto-api версии 1.9.6 не содержит типизированного поля GlobalJsonIndex в TableIndexDescription.
Для сравнения, C++ SDK обрабатывает kGlobalJsonIndex и преобразует его в EIndexType::GlobalJson.
Похоже, Java SDK требуется поддержка JSON-индекса на уровне protobuf-зависимости, модели TableIndex и преобразования ответа describeTable(), а также тест на таблицу с таким индексом.
Версии
- Анализ исходников: ветка
master,2.4.12-SNAPSHOT.
- Ngôn ngữ chính
- Java
- Star
- 53
- Fork
- 41
- Merge trung bình
- 1 ngày 30 phút
- Pull request đã merge (30 ngày)
- 18
Chuẩn bị môi trường
Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của ydb-platform/ydb-java-sdk
-
feat: Manage table attributesĐang mởenhancement feature-parity
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
ydb-platform/ydb-java-sdk#651 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug: "Sent message larger than max" error is retryableCó thể đã có người làm @mnnekrashevich đã nhận 42 ngày trước. Đang mởai_reviewed
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 58/100
ydb-platform/ydb-java-sdk#621 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Batching writes to topicĐang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 45/100
ydb-platform/ydb-java-sdk#573 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Topic API control event orderingĐang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
ydb-platform/ydb-java-sdk#553 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 55/100
ydb-platform/ydb-java-sdk#551 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của ydb-platform/ydb-java-sdk
Issue tương tự
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
apache/rocketmq-dashboard#6896 ·
Maintainer thường phản hồi trong vòng 3 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 67/100
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
OpenIntegrationEngine/engine#496 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
enhancement good first issue
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
SasanLabs/VulnerableApp#836 ·
Maintainer thường phản hồi trong vòng 1 ngày