Thread

  1. Re: Bug in pg_dump --filter? - Invalid object types can be misinterpreted as valid

    Srinath Reddy Sadipiralla <srinath2133@gmail.com> — 2025-08-02T16:14:19Z

    On Sat, Aug 2, 2025 at 3:18 PM Fujii Masao <masao.fujii@gmail.com> wrote:
    
    > Hi,
    >
    > It looks like pg_dump --filter can mistakenly treat invalid object types
    > in the filter file as valid ones. For example, the invalid type
    > "table-data"
    > (probably a typo for "table_data") is incorrectly recognized as "table",
    > and pg_dump runs without error when it should fail.
    >
    > --------------------------------------------
    > $ cat filter.txt
    > exclude table-data one
    >
    > $ pg_dump --filter filter.txt
    > --
    > -- PostgreSQL database dump
    > --
    > ...
    >
    > $ echo $?
    > 0
    > --------------------------------------------
    >
    > This happens because pg_dump (filter_get_keyword() in pg_dump/filter.c)
    > identifies tokens as sequences of ASCII alphabetic characters, treating
    > non-alphabetic characters (like hyphens) as token boundaries. As a result,
    > "table-data" is parsed as "table".
    >
    > To fix this, I've attached the patch that updates pg_dump --filter so that
    > it treats tokens as strings of non-space characters separated by spaces
    > or line endings, ensuring invalid types like "table-data" are correctly
    > rejected. Thought?
    >
    > With the patch:
    > --------------------------------------------
    > $ cat filter.txt
    > exclude table-data one
    >
    > $ pg_dump --filter filter.txt
    > pg_dump: error: invalid format in filter read from file "filter.txt"
    > on line 1: unsupported filter object type: "table-data"
    > --------------------------------------------
    >
    >
    Hi Fujii-san , +1 for the patch , I have reviewed and tested it and LGTM.
    
    -- 
    Thanks,
    Srinath Reddy Sadipiralla
    EDB: https://www.enterprisedb.com/