Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rel with string property insertion error #3143

Closed
ray6080 opened this issue Mar 26, 2024 · 1 comment · Fixed by #3247
Closed

Rel with string property insertion error #3143

ray6080 opened this issue Mar 26, 2024 · 1 comment · Fixed by #3247
Assignees
Labels
bug Something isn't working

Comments

@ray6080
Copy link
Contributor

ray6080 commented Mar 26, 2024

The attached test file triggers assertion

C++ exception with description "Assertion failed in file "/Users/guodong/Developer/kuzu/src/storage/compression/compression.cpp" on line 408: canUpdateInPlace(value, header)" thrown in the test body.

insert_rel_str_1000_1000_1.txt

@ray6080 ray6080 added the bug Something isn't working label Mar 26, 2024
@benjaminwinger
Copy link
Collaborator

It's a regression from #2654. The issue is that canUpdateInPlace is skipping nulls, but the null values are still being written as 0, which isn't a value that can be written in-place to an integer bitpacked chunk with a positive offset.

It's being triggered here in StringColumn::write where it's writing a null string as part of the gaps in the CSR data I think, though I'm not sure why the index column in this case started with an offset of 56.

However this shouldn't have any logical effect. It just results in unusual data being stored in null values (specifically, -offset, underflowed and truncated to the bit width used), and since we never attempt to re-compress chunks to make them smaller if the values change, it shouldn't even effect the compression (on the other hand some compression algorithms like delta compression would benefit from knowing where the nulls are so that they can use the value which would be the smallest in that context).
I suppose even passing the null data so that the debug checks can skip validating null values could be helpful though to avoid the error messages.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants