2014/1/15 Ashutosh Bapat <ashutosh.ba...@enterprisedb.com>

> Hi Cathleen,
> An aggregate can be working on more than one table e.g.
>
> select count(*) from a, b, c where a.c1 = b.c1 and b.c1 = c.c1;
>
> In such a case, which table would you like to be reported?
>
> IOW, it doesn't look to be sensible to attach and aggregate with a table.
>
> If you can explain what you intend to do with that information, there
> might be other ways to solve your problem.
>
>
> On Wed, Jan 15, 2014 at 3:29 PM, Masterprojekt Naumann1 <
> mpws201...@gmail.com> wrote:
>
>>
>> 2014/1/15 Masterprojekt Naumann1 <mpws201...@gmail.com>
>>
>>> Hi,
>>>
>>> during the initialization of the nodes in the plan tree (in ExecInitNode
>>> in the file execProcnode.c) I want to find out for a node with the type
>>> T_Agg which table will be aggregated. I tried the following:
>>>
>>>         resultAsAggState = ExecInitAgg((Agg *) node, estate, eflags);
>>>
>>> if (resultAsAggState)
>>> {
>>>  //tableOid = rel->rd_id;
>>> //tableOid = resultAsAggState->ss.ss_currentRelation->rd_id;
>>>          }
>>> It would be great to get the Oid of the table, but I would also be
>>> satisfied if I could get at least the name of the table. Does anyone know
>>> if it is possible to gather these information?
>>>
>>> Best regards
>>> Cathleen
>>>
>>
>> Sorry my mail program send the mail to early. Please ignore the line
>> tableOid = rel->rd_id. I was just deleting the line when google send the
>> mail :(
>>
>> resultAsAggState is of the type AggState. As you can see I tried to get
>> the Oid with the ScanState inside of the AggState, but its Relation
>> ss_currentRelation is not set already. Is there another way to get the Oid?
>>
>
>
>
> --
> Best Wishes,
> Ashutosh Bapat
> EnterpriseDB Corporation
> The Postgres Database Company
>


Hi,

maybe I should clarify what I want to achieve: At the moment I only handle
special aggregations with a filter that compares values with a constant. An
exampe query would be "select sum(c_custkey), c_nationkey from customer
group by c_nationkey having sum(c_custkey) = 445820473;" This query can be
run on TPCH.

For such special queries I want to find out, on which column in the query
result will be filtered and what is the filtered value. For the columnid,
it is sufficient, if I get the table OID and the columnid of the original
column, i.e. the table OID of customer und the columnid of c_custkey in the
original table. I know that the expression is represented by an OpExpr,
that has an opno and operators. I would like to find such expression in an
AggState. Additionally, I need the table OID, which may be elsewhere.
Where can I find this information?

Best regards,
Cathleen

Reply via email to