Hi, Having a query, I am trying to find out all the columns that need to be accessed (their varattno and vartype). I have access to a targetlist representing a tree like this. So, I am looking for a function that recursively traverses the tree and gives me the VARs. So, for SELECT a,b,b+c from tab; I am interested in [a,b]. Is such a function currently implemented in postgresql? How can I use it?
:targetlist ( > {TARGETENTRY > :expr > {VAR > :varno 1 > :varattno 1 > :vartype 23 > :vartypmod -1 > :varcollid 0 > :varlevelsup 0 > :varnosyn 1 > :varattnosyn 1 > :location 7 > } > :resno 1 > :resname l_orderkey > :ressortgroupref 0 > :resorigtbl 24805 > :resorigcol 1 > :resjunk false > } > {TARGETENTRY > :expr > {VAR > :varno 1 > :varattno 2 > :vartype 23 > :vartypmod -1 > :varcollid 0 > :varlevelsup 0 > :varnosyn 1 > :varattnosyn 2 > :location 18 > } > :resno 2 > :resname l_partkey > :ressortgroupref 0 > :resorigtbl 24805 > :resorigcol 2 > :resjunk false > } > {TARGETENTRY > :expr > {OPEXPR > :opno 551 > :opfuncid 177 > :opresulttype 23 > :opretset false > :opcollid 0 > :inputcollid 0 > :args ( > {OPEXPR > :opno 551 > :opfuncid 177 > :opresulttype 23 > :opretset false > :opcollid 0 > :inputcollid 0 > :args ( > {VAR > :varno 1 > :varattno 1 > :vartype 23 > :vartypmod -1 > :varcollid 0 > :varlevelsup 0 > :varnosyn 1 > :varattnosyn 1 > :location 28 > } > {VAR > :varno 1 > :varattno 2 > :vartype 23 > :vartypmod -1 > :varcollid 0 > :varlevelsup 0 > :varnosyn 1 > :varattnosyn 2 > :location 39 > } > ) > :location 38 > } > {VAR > :varno 1 > :varattno 3 > :vartype 23 > :vartypmod -1 > :varcollid 0 > :varlevelsup 0 > :varnosyn 1 > :varattnosyn 3 > :location 49 > } > ) > :location 48 > } > :resno 3 > :resname ?column? > :ressortgroupref 0 > :resorigtbl 0 > :resorigcol 0 > :resjunk false > } > ) >