-
Notifications
You must be signed in to change notification settings - Fork 1.2k
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
Exchange::getOutput use VectorSerde::deserialize
with resultOffset
parameter, it may throw VELOX_UNSUPPORTED error
#8240
Comments
In PR #7447 , In #7404, change @mbasmanova Could you please check this issue? I think the current implementation of |
@icejoywoo Nice catch. Curious, how did you discover this issue? What serializer do you use? Would you like to help come up with a fix? |
@mbasmanova We have an internal system based on Presto, which includes some internal enhancements. This system currently uses an older version of Presto with an outdated serialization/deserialization format. However, the latest version of Presto has introduced a simplified block serialization/deserialization. See presto commit Simplify Block serialization/deserialization.
So we have implemented a custom serializer to support our internal system, and this issue was discovered during the upgrade of Velox to the latest code.
I will submit PR to fix this later. |
@icejoywoo Thank you for clarifying. The PR you mention is from 2018 (6 years old!). How old is your Presto version? instead of changing Exchange, a better fix would be to implement missing functionality in your custom deserializer. We can add an VELOX_CHECK(serde-> supportsAppendInDeserialize()) to Exchange to provider a clearer error message. |
@mbasmanova I agree with you, I will implement this |
@icejoywoo Thank you. |
I'm closing this issue. Feel free to re-open if anything else needs discussion / fixing. |
Bug description
Expected behavior: Velox should support the legacy interface of
VectorSerde
, which use olddeserialize
withoutresultOffset
parameter.Actual behavior: The
Exchange::getOutput
use thedeserialize
withresultOffset
parameter, when singleSerializedPage
may contain more than oneRowVector
orPage
, Exchange useVectorSerde::deserialize
withresultOffset
in the innerwhile
loop, which may causeVELOX_UNSUPPORTED
error.Exchange related code follows:
System information
Velox System Info v0.0.2
Commit: e907a80
CMake Version: 3.27.3
System: Darwin-22.5.0
Arch: arm64
C++ Compiler: /Library/Developer/CommandLineTools/usr/bin/c++
C++ Compiler Version: 14.0.3.14030022
C Compiler: /Library/Developer/CommandLineTools/usr/bin/cc
C Compiler Version: 14.0.3.14030022
CMake Prefix Path: /Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/usr;/opt/homebrew;/usr/local;/usr;/;/opt/homebrew/Cellar/cmake/3.27.3;/usr/local;/usr/X11R6;/usr/pkg;/opt;/sw;/opt/local
Relevant logs
No response
The text was updated successfully, but these errors were encountered: