From: | Andres Freund <andres(at)anarazel(dot)de> |
---|---|
To: | Tomas Vondra <tomas(dot)vondra(at)2ndquadrant(dot)com> |
Cc: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: WIP: Faster Expression Processing v4 |
Date: | 2017-03-14 01:11:04 |
Message-ID: | 20170314011104.mtcepqxip7qo5ax4@alap3.anarazel.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi,
On 2017-03-13 01:03:51 -0700, Andres Freund wrote:
> What's basically missing here is:
> - pgindent run and minimizing resulting damage
Running into a bit of an issue here - pgindent mangles something like
EEO_SWITCH (op->opcode)
{
EEO_CASE(EEO_DONE):
goto out;
EEO_CASE(EEO_INNER_FETCHSOME):
/* XXX: worthwhile to check tts_nvalid inline first? */
slot_getsomeattrs(innerslot, op->d.fetch.last_var);
EEO_DISPATCH(op);
EEO_CASE(EEO_OUTER_FETCHSOME):
slot_getsomeattrs(outerslot, op->d.fetch.last_var);
EEO_DISPATCH(op);
EEO_CASE(EEO_SCAN_FETCHSOME):
slot_getsomeattrs(scanslot, op->d.fetch.last_var);
EEO_DISPATCH(op);
EEO_CASE(EEO_INNER_VAR):
{
int attnum = op->d.var.attnum;
/*
* Can't assert tts_nvalid, as wholerow var evaluation or such
* could have materialized the slot - but the contents are
* still valid :/
*/
Assert(op->d.var.attnum >= 0);
*op->resnull = innerslot->tts_isnull[attnum];
*op->resvalue = innerslot->tts_values[attnum];
EEO_DISPATCH(op);
}
into
EEO_SWITCH(op->opcode)
{
EEO_CASE(EEO_DONE):
goto out;
EEO_CASE(EEO_INNER_FETCHSOME):
/* XXX: worthwhile to check tts_nvalid inline first? */
slot_getsomeattrs(innerslot, op->d.fetch.last_var);
EEO_DISPATCH(op);
EEO_CASE(EEO_OUTER_FETCHSOME):
slot_getsomeattrs(outerslot, op->d.fetch.last_var);
EEO_DISPATCH(op);
EEO_CASE(EEO_SCAN_FETCHSOME):
slot_getsomeattrs(scanslot, op->d.fetch.last_var);
EEO_DISPATCH(op);
EEO_CASE(EEO_INNER_VAR):
{
int attnum = op->d.var.attnum;
/*
* Can't assert tts_nvalid, as wholerow var evaluation or such
* could have materialized the slot - but the contents are still
* valid :/
*/
Assert(op->d.var.attnum >= 0);
*op->resnull = innerslot->tts_isnull[attnum];
*op->resvalue = innerslot->tts_values[attnum];
EEO_DISPATCH(op);
}
which is a bit annoying. (the EEO_CASE is either a jump label or a case
statement, depending on computed goto availability).
It seems we could either:
1) live with the damage
2) disable pgindent
3) move the : inside EEO_CASE's definition, and only use {} blocks.
I'm inclined to go for 3).
Opinions?
- Andres
From | Date | Subject | |
---|---|---|---|
Next Message | Peter Geoghegan | 2017-03-14 01:14:07 | Re: tuplesort_gettuple_common() and *should_free argument |
Previous Message | Corey Huinker | 2017-03-14 01:08:03 | Re: asynchronous execution |