Skip to content

feat(silo): allow updating of string columns - #1392

Merged
taepper merged 1 commit into
mainfrom
1389-update-string-columns
Jul 28, 2026
Merged

feat(silo): allow updating of string columns#1392
taepper merged 1 commit into
mainfrom
1389-update-string-columns

Conversation

@taepper

@taepper taepper commented Jul 27, 2026

Copy link
Copy Markdown
Collaborator

resolves #1389

Summary

This adds the missing update method to the three types of string columns

PR Checklist

  • All necessary documentation has been adapted or there is an issue to do so.
  • The implemented feature is covered by an appropriate test.

@github-actions

github-actions Bot commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

This is a preview of the changelog of the next release. If this branch is not up-to-date with the current main branch, the changelog may not be accurate. Rebase your branch on the main branch to get the most accurate changelog.

Note that this might contain changes that are on main, but not yet released.

Changelog:

0.13.0 (2026-07-28)

⚠ BREAKING CHANGES

  • preprocessing: the database config options defaultNucleotideSequence and defaultAminoAcidSequence have been removed. sequenceName is now required on all nucleotide and amino acid filters (nucleotideEquals/aminoAcidEquals, hasMutation/hasAAMutation, insertionContains/aminoAcidInsertionContains, symbolInSet and the mutation profile filters).

Features

  • app: add a --version command to the silo binary (8b3146e)
  • preprocessing: remove default sequence names from database config (#1386) (b8712ec)
  • silo: allow updating of string columns (4d7c561)

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds missing update support for all string-column implementations so SaneQL/Python update_column can reassign plain, indexed, and zstd-compressed string fields (with explicit rejections for phylo-tree and lineage-index backed columns).

Changes:

  • Implement update(row_ids, optional<string>) for StringColumn, IndexedStringColumn, and ZstdCompressedStringColumn.
  • Extend scalar update dispatch to allow string updates and add targeted rejection errors for phylo/lineage-backed columns.
  • Add/extend C++ + Python tests and update Python binding documentation to reflect string update support.

Reviewed changes

Copilot reviewed 14 out of 14 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
src/silo/storage/column/zstd_compressed_string_column.test.cpp Adds unit test verifying update overwrites values (and nullability) across chunks.
src/silo/storage/column/zstd_compressed_string_column.h Exposes update(...) API for zstd-compressed string columns.
src/silo/storage/column/zstd_compressed_string_column.cpp Implements zstd-compressed string updates + null bitmap maintenance.
src/silo/storage/column/string_column.test.cpp Adds unit test verifying chunk rebuild behavior and null toggling on update.
src/silo/storage/column/string_column.h Updates chunk immutability doc and exposes update(...) API for plain string columns.
src/silo/storage/column/string_column.cpp Implements chunk-rebuild-based updates for plain string columns.
src/silo/storage/column/indexed_string_column.test.cpp Adds unit test ensuring updates keep inverted index consistent and handle null transitions.
src/silo/storage/column/indexed_string_column.h Exposes update(...) API for indexed string columns.
src/silo/storage/column/indexed_string_column.cpp Implements indexed-string updates while maintaining dictionary + inverted index + null bitmap.
src/silo/query_engine/scalar_column_update.cpp Enables scalar updates for string types and adds explicit rejection messages for phylo/lineage-backed columns.
src/silo/database.test.cpp Adds DB-level coverage for updating indexed string columns (including null and new dictionary values).
python/tests/test_database.py Adds end-to-end Python tests for updating a plain string column via bindings.
python/silodb/database.pyx Updates docstring to include quoted string literals + supported column types/rejections.
documentation/python_bindings.md Updates user docs for update_column to include string updates and restrictions.

Comment thread src/silo/storage/column/string_column.cpp Outdated
Comment thread src/silo/storage/column/indexed_string_column.cpp Outdated
Comment thread src/silo/query_engine/scalar_column_update.cpp

@fengelniederhammer fengelniederhammer left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 👍

Comment thread src/silo/storage/column/indexed_string_column.cpp
@taepper
taepper force-pushed the 1389-update-string-columns branch from b781b80 to 9307e36 Compare July 28, 2026 12:46
@taepper
taepper force-pushed the 1389-update-string-columns branch from 9307e36 to 4d7c561 Compare July 28, 2026 15:07
@taepper
taepper merged commit 818a737 into main Jul 28, 2026
20 checks passed
@taepper
taepper deleted the 1389-update-string-columns branch July 28, 2026 15:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Enable update of string columns

3 participants