• Tom Lane's avatar
    Allow most keywords to be used as column labels without requiring AS. · 06a7c315
    Tom Lane authored
    Up to now, if you tried to omit "AS" before a column label in a SELECT
    list, it would only work if the column label was an IDENT, that is not
    any known keyword.  This is rather unfriendly considering that we have
    so many keywords and are constantly growing more.  In the wake of commit
    1ed6b895 it's possible to improve matters quite a bit.
    
    We'd originally tried to make this work by having some of the existing
    keyword categories be allowed without AS, but that didn't work too well,
    because each category contains a few special cases that don't work
    without AS.  Instead, invent an entirely orthogonal keyword property
    "can be bare column label", and mark all keywords that way for which
    we don't get shift/reduce errors by doing so.
    
    It turns out that of our 450 current keywords, all but 39 can be made
    bare column labels, improving the situation by over 90%.  This number
    might move around a little depending on future grammar work, but it's
    a pretty nice improvement.
    
    Mark Dilger, based on work by myself and Robert Haas;
    review by John Naylor
    
    Discussion: https://postgr.es/m/38ca86db-42ab-9b48-2902-337a0d6b8311@2ndquadrant.com
    06a7c315
func.sgml 960 KB