• Tom Lane's avatar
    Undo decision to allow pg_proc.prosrc to be NULL. · 1111b266
    Tom Lane authored
    Commit e717a9a1 changed the longstanding rule that prosrc is NOT NULL
    because when a SQL-language function is written in SQL-standard style,
    we don't currently have anything useful to put there.  This seems a poor
    decision though, as it could easily have negative impacts on external
    PLs (opening them to crashes they didn't use to have, for instance).
    SQL-function-related code can just as easily test "is prosqlbody not
    null" as "is prosrc null", so there's no real gain there either.
    Hence, revert the NOT NULL marking removal and adjust related logic.
    
    For now, we just put an empty string into prosrc for SQL-standard
    functions.  Maybe we'll have a better idea later, although the
    history of things like pg_attrdef.adsrc suggests that it's not
    easy to maintain a string equivalent of a node tree.
    
    This also adds an assertion that queryDesc->sourceText != NULL
    to standard_ExecutorStart.  We'd been silently relying on that
    for awhile, so let's make it less silent.
    
    Also fix some overlooked documentation and test cases.
    
    Discussion: https://postgr.es/m/2197698.1617984583@sss.pgh.pa.us
    1111b266
functions.c 61.3 KB