Skip to content

dynamic_cast/dynamic_pointer_cast on Predicate fails across shared-library boundaries (missing RTTI key function) #449

Description

@zhangweilst

paimon::Predicate objects created in one shared library (e.g. libpaimon.so) can fail to dynamic_cast / dynamic_pointer_cast to their derived types (LeafPredicate, CompoundPredicate, PredicateFilter) when the cast is performed in a different DSO — for example inside a format plugin such as libpaimon_parquet_file_format.so / libpaimon_orc_file_format.so / third party plugins.

The cast returns nullptr even though the runtime type is correct, which silently breaks predicate handling (e.g. predicate pushdown in PredicateConverter)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions