Skip to content
Snippets Groups Projects
Select Git revision
  • benchmark-tools
  • postgres-lambda
  • master default
  • REL9_4_25
  • REL9_5_20
  • REL9_6_16
  • REL_10_11
  • REL_11_6
  • REL_12_1
  • REL_12_0
  • REL_12_RC1
  • REL_12_BETA4
  • REL9_4_24
  • REL9_5_19
  • REL9_6_15
  • REL_10_10
  • REL_11_5
  • REL_12_BETA3
  • REL9_4_23
  • REL9_5_18
  • REL9_6_14
  • REL_10_9
  • REL_11_4
23 results

postgres_fdw.sql

  • Tom Lane's avatar
    1eeee690
    Ensure that foreign scans with lateral refs are planned correctly. · 1eeee690
    Tom Lane authored
    As reported in bug #15613 from Srinivasan S A, file_fdw and postgres_fdw
    neglected to mark plain baserel foreign paths as parameterized when the
    relation has lateral_relids.  Other FDWs have surely copied this mistake,
    so rather than just patching those two modules, install a band-aid fix
    in create_foreignscan_path to rectify the mistake centrally.
    
    Although the band-aid is enough to fix the visible symptom, correct
    the calls in file_fdw and postgres_fdw anyway, so that they are valid
    examples for external FDWs.
    
    Also, since the band-aid isn't enough to make this work for parameterized
    foreign joins, throw an elog(ERROR) if such a case is passed to
    create_foreignscan_path.  This shouldn't pose much of a problem for
    existing external FDWs, since it's likely they aren't trying to make such
    paths anyway (though some of them may need a defense against joins with
    lateral_relids, similar to the one this patch installs into postgres_fdw).
    
    Add some assertions in relnode.c to catch future occurrences of the same
    error --- in particular, as backstop against core-code mistakes like the
    one fixed by commit bdd9a99a.
    
    Discussion: https://postgr.es/m/15613-092be1be9576c728@postgresql.org
    1eeee690
    History
    Ensure that foreign scans with lateral refs are planned correctly.
    Tom Lane authored
    As reported in bug #15613 from Srinivasan S A, file_fdw and postgres_fdw
    neglected to mark plain baserel foreign paths as parameterized when the
    relation has lateral_relids.  Other FDWs have surely copied this mistake,
    so rather than just patching those two modules, install a band-aid fix
    in create_foreignscan_path to rectify the mistake centrally.
    
    Although the band-aid is enough to fix the visible symptom, correct
    the calls in file_fdw and postgres_fdw anyway, so that they are valid
    examples for external FDWs.
    
    Also, since the band-aid isn't enough to make this work for parameterized
    foreign joins, throw an elog(ERROR) if such a case is passed to
    create_foreignscan_path.  This shouldn't pose much of a problem for
    existing external FDWs, since it's likely they aren't trying to make such
    paths anyway (though some of them may need a defense against joins with
    lateral_relids, similar to the one this patch installs into postgres_fdw).
    
    Add some assertions in relnode.c to catch future occurrences of the same
    error --- in particular, as backstop against core-code mistakes like the
    one fixed by commit bdd9a99a.
    
    Discussion: https://postgr.es/m/15613-092be1be9576c728@postgresql.org