Is your feature request related to a problem or challenge?
See
|
/// Test that HashTableLookupExpr serializes to lit(true) |
|
/// |
|
/// HashTableLookupExpr contains a runtime hash table that cannot be serialized. |
|
/// The serialization code replaces it with lit(true) which is safe because |
|
/// it's a performance optimization filter, not a correctness requirement. |
|
#[test] |
|
fn roundtrip_hash_table_lookup_expr_to_lit() -> Result<()> { |
If you take an ExecutionPlan and serialize it, all occurrences of HashTableLookupExpr are replaced with lit(true). This makes it difficult to send dynamic filters across the network.
Describe the solution you'd like
Ideally, there's some way to serialize and deserialize these expressions, potentially by serializing the seed
message HashTableLookupExpr {
repeated PhysicalExprNode on_columns = 1;
uint64 seed = 2;
repeated fixed64 build_hashes = 3;
}
Describe alternatives you've considered
No response
Additional context
No response
Is your feature request related to a problem or challenge?
See
datafusion/datafusion/proto/tests/cases/roundtrip_physical_plan.rs
Lines 3963 to 3969 in 5d6146c
If you take an
ExecutionPlanand serialize it, all occurrences ofHashTableLookupExprare replaced withlit(true). This makes it difficult to send dynamic filters across the network.Describe the solution you'd like
Ideally, there's some way to serialize and deserialize these expressions, potentially by serializing the seed
Describe alternatives you've considered
No response
Additional context
No response